FHEM Forum

FHEM => Sonstiges => Thema gestartet von: StefanStrobel am 05 Dezember 2015, 08:31:32

Titel: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Dezember 2015, 08:31:32
Hier eine neue Version von HTTPMOD zum Testen.

Bitte gebt mir Feedback wenn Ihr Bugs findet.

Folgendes ist neu:
- direktes Parsen von JSON inkl. automatischer Erzeugung von Readings für jedes Objekt
- Parsen von HTML-Daten und XML-Daten per XPath ist besser integriert und kann mit einem XPath mehrere Readings setzen
- Parsen von Regexes mit mehreren capture Groups kann mehrere Readings setzen
- dynamische Ersetzungen für URL, Header und Post Daten
- Reaktion auf Readings, die nicht aktualisiert wurden
- Erweiterte Dokumentation
- Maps können auch Leerzeichen im Text enthalten
- ParseFunction zum Einklinken eigener Parse-Funktionen
- diverse Bug Fixes und Kleinigkeiten

HTTPMOD hat sich intern an vielen Stellen geändert, so dass eine Parsing-Anweisung (Regex oder auch XPath) mehrere Readings erzeugen kann.
Beispiel:


attr myDevice reading02Regex something[ \t]+([\d\.]+)[ \t]+([\d\.]+)
attr myDevice reading02Name Temp
   
hier enthält die Regex zwei capture groups, die jeweils auf eine Zahl matchen.
Dabei werden zwei Readings erzeugt:

Temp-1
Temp-2

man kann diesen Readings auch eigene Namen geben. Dazu kann man die Attribute reading02-1Name, reading02-2Name etc. angeben. z.B.:

attr myDevice reading02-1Name AussenTemp
attr myDevice reading02-2Name InnenTemp
   
Entsprechend kann man alle anderen Attribute für die Aufbereitung und Formattierung der Readings auch mit Nummer-Nummer spezifizieren.

In den meisten Fällen wird jedoch der bisherige Weg, bei dem für jedes Reading eine eigene Regex angegeben wird, der einfachste bleiben.
   
   
aus der Doku zu JSON:
Wenn ein Webservice Daten im JSON-Format schickt, kann HTTPMOD diese jetzt direkt parsen und aus den Objekten Readings erzeugen.
Das folgende Beispiel fragt Daten von einem Poolmanager ab (noch ohne Readings):

define test2 HTTPMOD none 0
attr test2 get01Name Chlor
attr test2 getURL http://192.168.70.90/cgi-bin/webgui.fcgi
attr test2 getHeader1 Content-Type: application/json
attr test2 getHeader2 Accept: */*
attr test2 getData {"get" :["34.4008.value"]}

Die HTTP-Response enthält dann folgende Daten:

{
"data": {
"34.4008.value": "0.25"
},
"status":       {
"code": 0
},
"event":        {
"type": 1,
"data": "48.30000.0"
}
}

Um bisher den Wert 0.25 in das Reading Chlor zu bekommen, musste man eine Regex wie folgt definieren:


attr test2 get01Regex 34.4008.value":[ \t]+"([\d\.]+)"

Mit dem neuen JSON-Parsing könnte man statt dessen das Objekt in seiner Hierarchie adressieren:

attr test2 get01JSON data_34.4008.value

oder - wenn die Benennung der Reading keine Rolle spielt, kann man auch automatisch aus allen Objekten ein Reading erzeugen und den Pfad in der Hierarchie als Namen verwenden. (Ich habe mich hier an einem Code-Beispiel von Andre orientiert)
Dafür gibt es das folgende Attribut:

attr test2 extractAllJSON

Das gilt dann für alle gelesenen Daten in dieser Modul-Instanz und erzeigt aus obigen Daten die folgenden Readings:

data_34.4008.value 0.25
event_data 48.30000.0
event_type 1
status_code 0

Alternativ kann man auch schreiben:

attr test2 get01ExtractAllJSON

dann werden nur beim get Kommando get01 alle Objekte extrahiert.

aus der Doku zu XPath:

Eine andere Alternative zum Parsen von HTTP-Responses ist die Verwendung von XPath.
In der bisherigen Erweiterung von HTTPMOD für XPath hatte man einen XPath mit "xpath:" in Regexes angegeben.
Die neue Integration hat dafür ein eigenes Attribut. Wenn man HTML-Daten mit XPath parsen möchte, ist es:

(reading|get)[0-9]+XPath

und für echte XML-Daten:

(reading|get)[0-9]+XPath-Strict

Im Beispiel enthält eine HTTP-Response die folgenden XML-Daten:

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<actors>
<actor id=&quot;1&quot;>Peter X</actor>
<actor id=&quot;2&quot;>Charles Y</actor>
<actor id=&quot;3&quot;>John Doe</actor>
</actors>
</root>

Mit der XPath-Syntax könnte man schreiben:

attr myDevice reading01Name Actor
attr myDevice reading01XPath-Strict //actor[2]/text()

Das erzeugt ein Reading mit dem Namen "Actor" und dem Wert "Charles Y".

Da XPath-Angaben wie Regexes mit mehreren capture groups auch zu mehreren Treffern führen können, greift auch hier die Neuerung von HTTPMOD, bei der mit einer Anweisung mehrere Readings erzeugt werden :

attr myDevice reading01Name Actor
attr myDevice reading01XPath-Strict //actor/text()

Hier würden folgende Readings erzeugt:   

Actor-1 Peter X
Actor-2 Charles Y
Actor-3 John Doe
      

Für HTML-Daten funktioniert das entsprechend, jedoch statt mit XPath-Strict einfach mit XPath.

Zu Replacements:

Manchmal möchte man einzelne Teile einer URL, eines Headers oder der Post-Daten dynamisch ersetzen um z.B. das aktuelle Datum darin einzubauen oder weitere Daten an den Server zu senden. Mit den neuen Replacements kann man dafür beliebige Teile dieser Daten durch Text, den Inhalt von Readings oder Internals oder sogar mit Perl-Expressions ersetzen. Die Attribute dafür lauten:


  replacement[0-9]*Regex
  replacement[0-9]*Mode
  replacement[0-9]*Value
  [gs]et[0-9]*Replacement[0-9]*Value


Für eine Ersetzung definiert man immer einen regulären Ausdruck, der dann direkt vor dem Absenden des Requests gegen URL, Header und Post-Daten gematcht wird.
Die Art, wie dann ersetzt wird, gibt man mit dem Mode an. Wenn mode "reading" enthält, dann wird Value als Name eines Readings oder als Device:Reading interpretiert und der Wert des Readings wird an die Stelle des Matches gesetzt. der Mode "internal" funktioniert entsprechend mit Internals.
Für Profis gibt es den Mode "expression", bei dem der Wert von Value als Perl-Expression ausgewertet wird.

Beispiel:

attr mydevice getData {"get" :["%%value%%.value"]}
attr mydevice replacement01Mode text
attr mydevice replacement01Regex %%value%%

attr mydevice get01Name Chlor
attr mydevice get01Replacement01Value 34.4008

attr mydevice get02Name Something
attr mydevice get02Replacement01Value 31.4024

Hier wird %%value%% als Platzhalter fpr die Ersetzung fediniert.
Für alle Get-Kommandos gibt es ähnliche HTTP-Post Daten, die sich nur an einer Zahl unterscheiden. Deshalb sind die Post-Daten als "getData" definiert und gelten so für alle Get-Befehle. Auf Ebene der individuellen Get-Befehle wird dann nur noch ein Name und der zu ersetzende Wert angegeben.

Mit dem Mode "expression" kann man noch flexiblere Ersetzungen definieren:
         
attr mydevice replacement01Mode expression
attr mydevice replacement01Regex {{([^}]+)}}
attr mydevice replacement01Value ReadingsVal("mydevice", $1, "")
attr mydevice getData {"get" :["{{temp}}.value"]}

In diesem Beispiel alles innerhalb von doppelten geschweiften Klammern wird als Ersetzung erkannt und der Text dazwischen steht in der Ersetzungs-Expression als $1 zur Verfügung. Im Beispiel wird es als Parameter an ReadingsVal übergeben.

Zu MaxAge:

Bisher bleiben einmal gesetzte Readings bei HTTPMOD bestehen, auch wenn das abgefragte Gerät nicht mehr antwortet.
Am Timestamp der Readings kann man erkennen, dass sie veraltet sind und man konnte mit anderen Modulen wie Watchdog reagieren wenn ein bestimmtes Alter überschritten wurde.
Auf häufige Nachfrage von Anwendern ist nun ein Feature in HTTPMOD gelandet, mit dem man direkt in HTTPMOD bei jedem Reading angeben kann, wie lange das Reading gültig bleibt, falls es nicht mehr aktualisiert wird. Dazu kann man ein maximales Alter in Sekunden und eine Ersetzung mit den folgenden Attributen definieren:

  (reading|get)[0-9]*(-[0-9]+)?MaxAge
  (reading|get)[0-9]*(-[0-9]+)?MaxAgeReplacementMode
  (reading|get)[0-9]*(-[0-9]+)?MaxAgeReplacement

Falls ein solches Attribut definiert wird, prüft HTTPMOD bei jedem Aufruf der internen Lese-Funktion, welche Readings zu alt sind und wendet auf diese dann die Ersetzung an. Als Mode für die Ersetzung steht dabei nur "text" und "expression" zur Verfügung.
MaxAge wird in Sekunden angegeben und innerhalb einer Ersetzungs-Expression kann mit $val der frühere Wert verwendet werden.

Beispiel:
attr PM readingMaxAge 300<br>
attr PM readingMaxAgeReplacement "outdated - was " . $val <br>
attr PM readingMaxAgeReplacementMode expression

In diesem Beispiel wird MaxAge generisch für alle Readings angebenen, die mit einem reading-Attribut definiert wurden. Entsprechend könnte man es auch für ein einzelnes Reading oder einen Get-Befehl angeben (wie oben bei Format, Expr etc.)

Weitere Details stehen in der Doku bzw. im Code :-). Das Wiki muss erst noch aktualisiert werden.

EDIT:
7.12.15: neue Version angehängt
10.12.15 nochmal neue Version angehängt (Fehler im JSON parsing korrigiert und Attribut extractAllJSON auf Start mit kleinem "e" geändert damit es konsistent zum Rest ist.
22.12.15: neues Modul angehängt - Fehler beseitigt
28.12.15: neues Modul angehängt - setParseResponse Attribut
12.1.16: neues Modul angehängt - einfaches Cookie-Handling, Sid Extraktion und ReAuth Erkennung auch per JSON und XPath, Verbesserung bei den Replacements etc. (siehe späterer Post)
16.1.16: neue Version angehängt. Jetzt kann man auch bei get einen optionalen Wert mitgeben, der dann per Replacement in den HTTP-Request eingebaut werden kann. (siehe post vom 16.1.)
23.1.16 neue Version: Attribut RegOpt für Regex-Options wie g, AutoNumLen um Zahlen, die beim Reading-Namen automatusch angehängt werden wenn es mehrere Matches gibt, mit führenden Nullen zu formatieren, diverse Verbesserungen an der Doku, MATCHED_READINGS korrigiert
25.1.16: neue Version: das Verhalten beim Zufügen von Attributen zu userattr für fhemweb optimiert.
1.2.16: neue Version: ein Löschen von enableCookies löscht nun auch den Cookie-Speicher.
2.2.16: neue Version: Warnung gefixt, neue Attribute authRetries und clearSIdBeforeAuth, Auth wird nicht mehr gequeued sondern vorgezogen wenn nötig
4.2.16: kleine Änderung: bei fehlendem readingXXName wird unnamed-XX als Name verwendet oder falls readingXXJSON angegeben wurde der Wert dieses Attributs.
5.2.16: Warnung gefixt.
13.2.16: Neue Zwischenversion, IMap und OMap teilweise implementiert, httpVersion und sslVersion Attribute hinzugefügt.
14.2.16: Nochmal eine Zwischenversion: sslArgs können spezifiziert werden, z.B. attr myDevice sslArgs SSL_verify_mode,SSL_VERIFY_NONE
15.2.16: Neue Version: set storeKeyValue verwendet setKeyValue zum speichern z.B. von Passwörtern ausserhalb der Konfiguration. Ein neuer replacement mode "key" kann auf getKeyValue zugreifen. Map und Expr Attribute wurden zu IMap für Eingaben und OMap für Ausgaben, entsprechend IExpr und OExpr für Ein- bzw. Ausgaben. set upgradeAttributes zum automatischen anpassen der Attribute auf die neue Syntax.
20.2.16: Neue Version, $XML::XPath::SafeMode = 1 für XML Parser gesetzt um Memory Leak zu vermeiden

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BKSolo am 05 Dezember 2015, 10:48:53
Hallo Stefan, vielen Dank für die Bereitstellung. Meine ersten Erfahrungen auf dem Raspberry 2 sind.

Habe das Modul ausgetauscht und beim Restart im Logfile den Fehler " Can't locate JSON.pm in...." erhalten. Habe dieses mit
sudo apt-get install libjson-perl
behoben.

Erneuter Restart ergab im Logfile den Fehler " Can't locate HTML/TreeBuilder/XPath.pm in....". Vorgängig hatte ich mit
sudo apt-get install libxml-parser-perl libxml-xpath-perl libxml-TreeBuilder-perl
die Libraries installiert.
Bis jetzt konnte ich noch nichts finden was zusätzlich installiert werden müsste.
Ein "find" über die Installation zeigt mir das ich auf "/usr/share/perl5/XML/XPath.pm" das XPath.pm vorhanden ist.

Was mach ich falsch?
Danke, Bruno


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: justme1968 am 05 Dezember 2015, 11:02:08
kurzer vorschlag vor dem testen: wie wäre es json und xpath nur dann anzubieten wenn die module auch installiert sind?

ich glaube das würde vielen problemen vorbeugen wenn die neue version eingecheckt wird und es hilft auch anwendern auf plattformen auf denen nicht so einfach ein perl modul nach zu installieren ist.

gruss
  andre
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BKSolo am 05 Dezember 2015, 11:22:33
Hallo Andre, es wäre schade wenn wir die Module erst bekommen wenn diese "Fertig" und voll "Integriert" sind.
Ich war mit Alpha2 auf das XML angewiesen und sehr froh dass es diese ersten Versionen des Moduls gab. Es ist jedem freigestellt ob er es in einer frühen Version testen und einsetzen will.

Hallo Stefan, ich konnte in der Zwischenzeit den Fehler beheben mit
sudo cpan install HTML::TreeBuilder::XPath
und werde meine laufende Installation Alpha2 mit dem neuen Modul auf meinem Test-Raspberry testen.

Danke und Gruss, Bruno
Titel: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: justme1968 am 05 Dezember 2015, 11:26:07
ich glaube du hast mich falsch verstanden ...

es ging darum features im fhem modul nur dann zu aktivieren wenn die benötigten Perl module auch vorhanden sind.

dann muss man nicht perl module installieren die man für sich selber nicht braucht, und es wird später wenn die neue version eingecheckt wird keinen aufschrei geben weil die hälfte der bestehenden defines plötzlich weg ist.

es ging nicht darum den funktionsumfang einzuschränken oder keine vor vorversionen mehr herauszugeben. ganz im gegenteil.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 05 Dezember 2015, 11:54:46
Zitates ging darum features im fhem modul nur dann zu aktivieren wenn die benötigten Perl module auch vorhanden sind.
meine fritzbox würde die idee sehr begrüssen.  :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Dezember 2015, 14:40:01
Hallo,

so war es auch gedacht :-)
Das Laden von JSON und XPath ins Modul erfolgt nur, wenn die entsprechenden Attribute verwendet werden.
Allerdings war noch ein Tippfehler drin, so dass dann bei fehlender Lib ein Crash statt nur einer Meldung kam.
Eval {} ist halt doch was anderes als eval """"...
Ich aktualisiere gleich den ersten Post mit der neuen Version.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BKSolo am 05 Dezember 2015, 16:33:16
Ich habe mit der neusten Version meine Alpha2 Implementierung angepasst (in http://forum.fhem.de/index.php/topic,42040.msg366947.html#msg366947 (http://forum.fhem.de/index.php/topic,42040.msg366947.html#msg366947) beschrieben).
Dabei verwende ich die neue Möglichkeit der mehrfachen XML-Werte.

define Alpha2 HTTPMOD http://xxx.xxx.xxx.xxx/data/dynamic.xml 600
attr Alpha2 comment Fussbodenheizung
attr Alpha2 enableXPath-Strict 1
attr Alpha2 group Fussbodenheizung
attr Alpha2 reading01Name Ist-Temperatur
attr Alpha2 reading01XPath-Strict //Devices/Device/HEATAREA/T_ACTUAL/text()
attr Alpha2 reading02Name Soll-Temperatur
attr Alpha2 reading02XPath-Strict //Devices/Device/HEATAREA/T_TARGET/text()
attr Alpha2 room Fussbodenheizung
attr Alpha2 stateFormat {sprintf("Ist-Temperatur-1: %.1f, Soll-Temperatur-1: %.1f , Ist-Temperatur-2: %.1f , Soll-Temperatur-2: %.1f , Ist-Temperatur-3: %.1f , Soll-Temperatur-3: %.1f  , Ist-Temperatur-4: %.1f , Soll-Temperatur-4: %.1f  ",  ReadingsNum($name,"Ist-Temperatur-1",0), ReadingsNum($name,"Soll-Temperatur-1",0), ReadingsNum($name,"Ist-Temperatur-2",0), ReadingsNum($name,"Soll-Temperatur-2",0),ReadingsNum($name,"Ist-Temperatur-3",0), ReadingsNum($name,"Soll-Temperatur-3",0), ReadingsNum($name,"Ist-Temperatur-4",0), ReadingsNum($name,"Soll-Temperatur-4",0))}


Damit wird der Code kürzer und übersichtlicher. In der restlichen Implementierung muss dann nur bei den Namen ein - (Minus) eingegeben werden. Alt: Ist-Temperatur1 Neu: Ist-Temperatur-1.

Soweit funktioniert es gut - Danke euch.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 05 Dezember 2015, 18:06:59
Zitat von: StefanStrobel am 05 Dezember 2015, 14:40:01
Das Laden von JSON und XPath ins Modul erfolgt nur, wenn die entsprechenden Attribute verwendet werden.
perfekt.

ich vermisse noch eine möglichkeit die kommunikation zu überwachen, um auf fehler (timeout, no route to host, cannot fork, ...) entsprechend reagieren zu können. vielleicht habe ich es auch nur noch nicht gefunden bei den unendlichen möglichkeiten.

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Dezember 2015, 23:21:27
Hallo Frank,

wenn das Attribut showError gesetzt ist, bekommst Du ein Reading bzw. einen Event mit der Fehlermeldung als LAST_ERROR. Reicht das aus?

in der Read-Funktionsieht das so aus:
if ($err) {
$buffer = $buffer . "\r\n\r\n" . $err;                          # so err can be used in reAuthRegex matching
readingsSingleUpdate ($hash, "LAST_ERROR", $err, 1)
if (AttrVal($name, "showError", undef))
}


Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 05 Dezember 2015, 23:41:14
Zitatwenn das Attribut showError gesetzt ist, bekommst Du ein Reading bzw. einen Event mit der Fehlermeldung als LAST_ERROR. Reicht das aus?

hallo stefan,
das hört sich schon sehr gut an. ich werde testen.

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 06 Dezember 2015, 10:45:20
hallo stefan,

nach tausch meiner alten version mit anschliessendem reboot wird httpmod nicht mehr geladen.

# $Id: 98_HTTPMOD.pm 9127 2015-08-24 18:43:31Z ststrobel $

2015.12.06 10:27:14.238 0: Server shutdown
2015.12.06 10:29:53.643 1: Including fhem.cfg
2015.12.06 10:30:00.267 1: HMLAN_Parse: hmusb1 new condition disconnected
2015.12.06 10:30:00.370 1: HMLAN_Parse: hmusb1 new condition init
2015.12.06 10:30:00.403 1: HMLAN_Parse: hmlan1 new condition disconnected
2015.12.06 10:30:00.426 1: HMLAN_Parse: hmlan1 new condition init
2015.12.06 10:30:15.815 1: reload: Error:Modul 98_HTTPMOD deactivated:
Type of arg 1 to each must be hash or array (not private variable) at ./FHEM/98_HTTPMOD.pm line 918, near "$ref) "
Type of arg 1 to each must be hash or array (not private variable) at ./FHEM/98_HTTPMOD.pm line 922, near "$ref) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1125, <$fh> line 1397.


Perl     : v5.12.2

perldoc sagt:
ZitatStarting with Perl 5.14, each can take a scalar EXPR, which must hold a reference to an unblessed hash or array. The argument will be dereferenced automatically. This aspect of each is considered highly experimental. The exact behaviour may change in a future version of Perl.

edit:
es sind weitere fehler vorhanden, wenn ich die beiden "each $ref" fehler folgendermassen ändere:
in z918 zu "each @{$ref}" und
in z922 zu "each %{$ref}".
abgesehen davon, ob diese änderungen überhaupt funktionell passen, wird jedenfalls erst einmal weiter kompiliert bis zu folgendem abbruch:

2015.12.07 12:49:57.020 1: reload: Error:Modul 98_HTTPMOD deactivated:
Type of arg 1 to keys must be hash or array (not hash element) at ./FHEM/98_HTTPMOD.pm line 1161, near "}) "
Type of arg 1 to push must be array (not null operation) at ./FHEM/98_HTTPMOD.pm line 1341, near "$reading) "
Type of arg 1 to keys must be hash or array (not hash element) at ./FHEM/98_HTTPMOD.pm line 1351, near "}) "
Type of arg 1 to push must be array (not null operation) at ./FHEM/98_HTTPMOD.pm line 1384, near "$reading)"


ZitatStarting with Perl 5.14, keys can take a scalar EXPR, which must contain a reference to an unblessed hash or array. The argument will be dereferenced automatically. This aspect of keys is considered highly experimental. The exact behaviour may change in a future version of Perl.
ZitatStarting with Perl 5.14, push can take a scalar EXPR, which must hold a reference to an unblessed array. The argument will be dereferenced automatically. This aspect of push is considered highly experimental. The exact behaviour may change in a future version of Perl.

edit2:
mit diesen änderungen läuft die neue version jetzt auch auf der fritzbox. mit meiner definition aus der anfangszeit von httpmod scheint alles zu funktionieren. LAST_ERROR kommt auch. die auswirkungen meiner änderungen musst du beurteilen:

zeile 918 geändert
        while( my ($key,$value) = each @{$ref}) {

zeile 922 geändert
        while( my ($key,$value) = each %{$ref}) {                                       

zeile 1161 geändert
    foreach my $reading (sort keys %{$hash->{READINGS}}) {

zeile 1341 ersetzt
if ($tried) {
if($match) {
push (@matched, $reading);
} else {
push (@unmatched, $reading);
}
}

zeile 1351 geändert
            foreach my $object (keys %{$hash->{ParserData}{JSON}}) {

zeile 1384 ersetzt
if($match) {
push (@matched, $reading);
} else {
push (@unmatched, $reading);
}


gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 07 Dezember 2015, 07:44:15
Hallo zusammen
Ich möchte gerne das neue Modul nutzen für meinen Steckdosenschalter mit Powermeter, aber ich schaffe es einfach nicht und wäre deshalb froh über einen Schups in die richtige Richtung.

Schalten kann ich das Relay mit:
http://192.168.2.123/relay?state=1

Einen Report erhalte ich mittels :
http://192.168.2.123/report

Dieser liefert mir:
{
"power": 0,
"relay": false
}


Ich habe es wie folgt probiert:
define Harasse1 HTTPMOD none 0
attr Harasse1 get01Name power
attr Harasse1 getURL http://192.168.2.123/report
attr Harasse1 getHeader1 Content-Type: application/json
attr Harasse1 getHeader2 Accept: */*
attr Harasse1 getData {"get" :["power"]}


Ich erhalte immer folgende Fehlermeldung:
2015.12.07 07:25:28 3: Harasse1: Read response to update didn't match any Reading

Besten Dank für einen Hinweis.
Viele Grüsse Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: nesges am 07 Dezember 2015, 15:38:30
Funktioniert wunderbar und die Umstellung auf die neuen XPath-Attribute ist ein Kinderspiel. Danke!

Das Auflösen von mehreren Treffern auf numerierte Readings ist eine gute Lösung, allerdings benötige ich eine zusammengefasste, kommaseparierte Liste. Die daraus selbst zu bauen ist als userReading machbar:

movies { my @urv; for(my $r=1;$r>0;$r++) { my $v=ReadingsVal($name, "movies-".$r, undef); if($v) {push(@urv, $v)} else { last } } join(', ', @urv) }

aber nicht grade hübsch. Von daher wäre das von dir im anderen Thread bereits angesprochene Attribut "joinMultipleHits" sehr willkommen :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Dezember 2015, 20:54:29
Hallo,

ich habe eine neue Version im ersten Post angehängt.
@nesges:
attr myDevice reading01RecombineExpr join ", ", @matchlist
bzw. ohne 01 wenn es für alle readings gelten soll oder get01RecombineExpr wenn es für ein get gelten soll.
Damit werden dann alle Ergebnisse definierbar zusammengebaut.

@frank: habe Deine Änderungen übernommen. Damit sollte es auch mit einem alten Perl wieder klappen
(ich konnte es leider nicht testen, da ich dafür erst ein neues System mit altem Perl aufsetzen müsste)

@eppi: In Deiner Konfiguration fehlt die Parse-Anweisung. Entweder mit Regexes oder JSON
(z.B. attr Harasse1 ExtractAllJSON 1)

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 08 Dezember 2015, 00:15:54
ZitatDamit sollte es auch mit einem alten Perl wieder klappen
danke stefan, läuft weiterhin bestens.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: nesges am 08 Dezember 2015, 10:13:20
Nochmals Danke, funktioniert nach erstem Test einwandfrei. Nur eine Kleinigkeit:

2015.12.08 10:08:03 1: PERL WARNING: Use of uninitialized value $matchlist[0] in join or string at ./FHEM/98_HTTPMOD.pm line 1045.
2015.12.08 10:08:03 1: PERL WARNING: Use of uninitialized value $val in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1105.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BKSolo am 08 Dezember 2015, 14:00:38
Hallo,
Zitat....ich habe eine neue Version im ersten Post angehängt.

Ich habe auf meinem "Raspberry 2 produktiv" das neuste HTTPMOD geladen und den von mir früher beschriebenen neuen Alpha 2 Code ins config geladen.

Startet jetzt ohne Nachfrage von fehlenden Modulen und läuft gut.

Besten Dank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 08 Dezember 2015, 20:41:04
Zitat von: StefanStrobel am 07 Dezember 2015, 20:54:29
@eppi: In Deiner Konfiguration fehlt die Parse-Anweisung. Entweder mit Regexes oder JSON
(z.B. attr Harasse1 ExtractAllJSON 1)
Hallo Stefan
Besten Dank für deinen Hinweis! Ich habe mittlerweile das power Reading und kann die Daten entsprechend auswerten. Ich habe dazu noch 2 Fragen:

Wie kann ich mein zweites Reading "relay" mit HTTPMOD als Reading haben?
Einfach das attr Harasse1 get02Name relay hinzufügen funktioniert nicht.

Wie kann ich die Set Befehle um das Relay zu schalten einbauen?

Sorry, aber ich blicke da noch nicht durch..
Viele Grüsse & Danke - Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Dezember 2015, 21:09:57
Hallo Dani,

das relay ist bei extractAllJSON nicht erschienen, weil noch ein Bug im HTTPMOD war. Ich habe gerade eine neue Version im ersten Post angehängt. Jetzt sollte es klappen.
Zudem habe ich das Attribut von ExtractAllJSON auf extractAllJSON umbenannt, da alle anderen Attribute ebenfalls mit kleinen Buchstaben beginnen.

Für den Set Befehl musst Du herausfinden, was Dein Gerät für einen HTTP-Request zum Ändern eines Wertes erwartet und ob eine Authentisierung nötig ist. Ich würde das mit der Burp-Suite aufzeichnen und ansehen. Dann musst Du Header und ggf. Post-Daten mit set01... Attributen definieren. Am besten schaust Du Dir den Wiki-Artikel dazu an. Der beschreibt zwar noch nicht die neue Version, aber das mit Set sollte so wie bisher funktionieren.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 11 Dezember 2015, 06:06:27
Hallo Stefan
Herzlichen Dank für den tollen Support. Könntest du noch die neue Version hochladen? Aktuelle ist keine mehr verfügbar.

Vielen Dank und Gruss Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Dezember 2015, 08:04:24
Sorry - jetzt ist sie wieder da.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 11 Dezember 2015, 17:13:04
Hi Stefan
Es kommt eine Fehlermeldung, dass das Modul nicht geladen werden kann. Ich glaube am Schluss der .pm Datei fehlen noch ein paar Zeichen/Zeilen.
Kannst du bitte mal schauen?

Danke vielmals und viele Grüsse Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Dezember 2015, 17:19:19
Seltsam.
Wurde wohl beim upload abgeschnitten.
Jetzt hab ichs nochmal hochgeladen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 11 Dezember 2015, 18:44:03
Hallo Stefan
Besten Dank, das Module funktioniert nun, auch werden bei mir nun alle readings angezeigt!

Ich habe noch eine Verständnisfrage:
Ich schalte meinen Switch ein mit
http://192.168.2.123/relay?state=1&
und aus mit:
http://192.168.2.123/relay?state=0&

Ich habe versucht die Set Parameter wie folgt zu definieren:
attr Harasse1 set01Data state=1&
attr Harasse1 set01Name on
attr Harasse1 set01Data state=1&
attr Harasse1 set01URL http://192.168.2.123/relay?
attr Harasse1 set02Data state=0&
attr Harasse1 set02Name off


Da ich der Meinung bin, dass sich der set Befehl zusammensetzt aus der set01URL und set01Data. Dabei bekomme ich jedoch immer die Fehlermeldung "no value given to set on"

Hast du noch einen Tipp für mich?
Danke für deine Geduld und viele Grüsse Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Dezember 2015, 11:41:20
Hallo,

HTTPMOD geht bei einem normalen Set davon aus, dass ein Parameter einen Wert bekommt.
In Deinem Beispiel also set Harasse1 power 0 oder set Harasse1 power 1.
Nach einem Parameter wird also zunächst ein numerischer Wert erwartet.
Mit einer Map kann man dann on auf 1 und off auf 0 Mappen

In Deinem Beispiel wäre das:

attr Harasse1 set01URL http://192.168.2.123/relay?
attr Harasse1 set01Name power
attr Harasse1 set01Data state=$val&
attr Harasse1 set01Map 0:off, 1:on


Wenn Du zwei separate sets für on und off definieren möchtest, die keine Werte bekommen geht das auch.
Dann müsstest Du aber zusätzlich das Attribut set01NoArg und set02NoArg setzen.

Gruss
    Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 12 Dezember 2015, 18:27:25
Hallo Stefan
Besten Dank für deine Geduld und Tipps! Ich tue mich sehr schwer damit, die Attribute deines genialen Moduls zu verstehen.
Meine Definition sieht auktuell so aus:
define Harasse1 HTTPMOD http://192.168.2.123/report 600
attr Harasse1 userattr extractAllJSON get01Name getHeader1 getHeader2 getURL set01Data set01Map set01Name set01URL set02Data set02Name set02URL setHeader01 setHeader03 setHeader1 setHeader2 stateFormat verbose
attr Harasse1 extractAllJSON 1
attr Harasse1 getHeader1 Content-Type: application/json
attr Harasse1 getHeader2 Accept: */*
attr Harasse1 getURL http://192.168.2.123/report
attr Harasse1 room 1_Favoriten
attr Harasse1 set01Data state=$val&
attr Harasse1 set01Map 0:off, 1:on
attr Harasse1 set01Name relay
attr Harasse1 set01URL http://192.168.2.123/relay?
attr Harasse1 stateFormat {sprintf("%.1f",ReadingsVal("Harasse1","power",0))}
attr Harasse1 verbose 5


Im List des Device sehe ich auch, dass das set Komando richtig zusammengesetzt ankommt, jedoch antwortet HTTPMOD mit einem:
HTTP/1.1 405 Method Not Allowed Content-Type: text/html Connection: close Date: Sat, 12 Dec 2015 17:20:46 GMT Content-Length: 108 <HTML><HEAD> <TITLE>405 Method Not Allowed</TITLE> </HEAD><BODY> <H1>Method Not Allowed</H1> </BODY></HTML>
Ich habe schon erfolglos folgende Attribute versucht:
attr Harasse1 setHeader01 Content-Type: application/x-www-form-urlencoded
attr Harasse1 setHeader02 Accept: */*


Hast du mir nochmals einen Tipp?
Danke für deine Zeit und viele Grüsse Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Dezember 2015, 20:41:32
Hallo,

wenn Du set01Data angibst, werden die angegebenen Daten in einem HTTP POST gesendet.
Dein Gerät scheint die Daten aber als Query-String in der URL zu erwarten.
Statt set01Data solltest Du die URL so ändern:


attr Harasse1 set01URL http://192.168.2.123/relay?state=$val&


Dann wird das ganze als HTTP GET geschickt.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: eppi am 14 Dezember 2015, 19:52:45
Danke vielmals Stefan! Alles funktioniert perfekt. Danke für den super Support!
Gruss Dani
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: highTower.su am 22 Dezember 2015, 00:01:20
Hi,

ich habe das Modul mit JSON ausprobiert, jedoch stürzt FHEM im längeren Betrieb mit folgender Meldung ab:

':' expected, at character offset 4 (before "}") at ./FHEM/98_HTTPMOD.pm line 948.

Meine Konfiguration:

#define flurlicht_unten HTTPMOD http://rpi-server2.w...u/mode.php?format=json 10
#attr flurlicht_unten userattr devStateIcon event-on-change-reading extractAllJSON set01Map set01Name set01URL stateFormat webCmd
#attr flurlicht_unten alias LED Streifen Flur
#attr flurlicht_unten event-on-change-reading .*
#attr flurlicht_unten extractAllJSON 1
#attr flurlicht_unten group Licht
#attr flurlicht_unten room hall
#attr flurlicht_unten set01Map 0:off, 1:regenbogenlauf, 2:regenbogen, 3:pixel, 4:codered, 5:blaulicht, 6:warmwhite, 7:white
#attr flurlicht_unten set01Name mode
#attr flurlicht_unten set01URL http://rpi-server2.w...u/mode.php?format=json&mode=$val
#attr flurlicht_unten stateFormat current-mode


Aber der Weg ist der richtige, es funktionierte sonst ganz gut...

Viele Grüße,

highTower
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Dezember 2015, 18:13:14
Hallo,

die JSON Bibliothek crasht bei ungültigen Daten und im Modul wurde der Fehler noch nicht abgefangen.
Ich habe gerade eine neue Version im ersten Post dieses Threads hochgeladen.

Gruss und vielen Dank an alle für's Testen
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: voller am 24 Dezember 2015, 13:38:16
Moin Stefan,
ich hab da mal ne Frage was muss ich tun bzw. mit welchem Attibut werden die Readings sofort aktuallisiert nach einem Set?
Scenario:
Mit diesem Befehl wird der Status abgefragt http://192.168.12.43/current_state.xml?pw=admin
Und mit diesem Befehl wird das 1. Relais gesetzt http://192.168.12.43/current_state.xml?pw=admin&Relay1=[0/1]

attr SmartDEN set01Map 0:off, 1:on
attr SmartDEN set01Name Relay01
attr SmartDEN set01URL http://192.168.12.43/current_state.xml?pw=admin&Relay1=$val
attr SmartDEN reading01Map 0:off, 1:on
attr SmartDEN reading01Name Relay1
attr SmartDEN reading01Regex xpath-strict://CurrentState/Relay1/State

Funktioniert bezüglich der Relaisansteuerung einwandfrei aber die Readings werden nur im dem übergebenen bzw. default Intervall aktualisiert.
Wie bewege ich HTTPMOD dazu die Antwort XML auf ein Set durch den Reading-Parser zu schicken?

Wie gesacht ich bin keine Leuchte bezüglich Perl etc. und sehe den Wald vor lauter Bäumen nicht mehr. :'(
Sowat wie dies bekomme ich immer auf ein GET SET und einer Readings-Abfrage zurück aber scheinbar wertet die SET-Anweisung die XML nicht aus.

<CurrentState><Relay1><Name>RELAY1</Name><State>1</State></Relay1><Relay2><Name>RELAY2</Name><State>0</State></Relay2><Relay3><Name>RELAY3</Name><State>0</State></Relay3><Relay4><Name>RELAY4</Name><State>0</State></Relay4><Relay5><Name>RELAY5</Name><State>0</State></Relay5><Relay6><Name>RELAY6</Name><State>0</State></Relay6><Relay7><Name>RELAY7</Name><State>0</State></Relay7><Relay8><Name>RELAY8</Name><State>0</State></Relay8><Relay9><Name>RELAY9</Name><State>0</State></Relay9><Relay10><Name>RELAY10</Name><State>0</State></Relay10><Relay11><Name>RELAY11</Name><State>0</State></Relay11><Relay12><Name>RELAY12</Name><State>0</State></Relay12><Relay13><Name>RELAY13</Name><State>0</State></Relay13><Relay14><Name>RELAY14</Name><State>0</State></Relay14><Relay15><Name>RELAY15</Name><State>0</State></Relay15><Relay16><Name>RELAY16</Name><State>0</State></Relay16></CurrentState>


Und Tschüß
Voller



Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Dezember 2015, 17:28:46
Hallo voller,

bisher werden die Antworten auf ein set nicht weiter geparsed und bisher hat das auch noch niemand vermisst (meine Geräte liefern auf ein set keine sinnvolle Antwort und ich muss eh ein get danach machen).
Es sollte aber kein größerer Aufwand sein, dafür ein Attribut einzubauen, so dass auch die Antwort auf ein set geparsed wird.
Neue Version kommt ;-) Wird aber in diesem Jahr nichts mehr werden.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: voller am 26 Dezember 2015, 20:36:27
Moin Stefan,
danke für die Antwort, nach dem Durchschauen der HTTPMOD ist es mir auch wie Schuppen aus den Haaren gefallen, dat SET nix parsen tut. :-[
Meine Kenntnisse reichten aber nicht aus um das selbst einzubauen. :( Ich warte dann dankbar auf eine neue Version in der Zukunft, die dat kann.  :)
BKSolo könnte sich ggf. auch darauf freuen, da auch die alpha2 ein Handshake XML beim SET sendet. Beinhaltet aber nix anderes als "Befehl einwandfrei ausgeführt oder Error-Statement"

Gruss
Voller
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Dezember 2015, 13:28:48
Hallo,

ich hab gerade eine neue Version an den ersten Post in diesem Thread gehängt. Darin gibt es ein neues Attribut mit Namen set[0-8]*ParseResponse.

Mit
attr myModul set01ParseResponse 1
wird die Antwort auf den ersten set so behandelt / geparsed als wäre es ein get gewesen.
mit
attr myModul setParseResponse 1
gilt das für alle sets.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: voller am 03 Januar 2016, 12:08:18
Danke Stefan,  :D
dat mit dem set01ParseResponse funzt einwandfrei.
für Leute die es interessiert häng ich mal nen (verbesserungsfähigen) Code für das bulgarische 16-fach Web-Relais http://denkovi.com/smartden-lan-ethernet-16-relay-module-din-rail-box (http://denkovi.com/smartden-lan-ethernet-16-relay-module-din-rail-box) für die Einzelrelaissteuerung des 16. Relais bei.

define Relais16 HTTPMOD http://xxx.xxx.xxx.xxx/current_state.xml?pw=admin 9000
attr Relais16 userattr comment get1Map get1Name get1URL get1XPath-Strict reading1Map reading1Name reading1XPath-Strict set1Map set1Name set1ParseResponse set1URL stateFormat webCmd
attr Relais16 get1Map 0:off, 1:on
attr Relais16 get1Name Relais
attr Relais16 get1URL http://xxx.xxx.xxx.xxx/current_state.xml?pw=admin
attr Relais16 get1XPath-Strict //CurrentState/Relay16/State/text()
attr Relais16 group Relais
attr Relais16 reading1Map 0:off, 1:on
attr Relais16 reading1Name Relais
attr Relais16 reading1XPath-Strict //CurrentState/Relay16/State/text()
attr Relais16 room Relais
attr Relais16 set1Map 0:off, 1:on
attr Relais16 set1Name Relais
attr Relais16 set1ParseResponse 1
attr Relais16 set1URL http://xxx.xxx.xxx.xxx/current_state.xml?pw=admin&Relay16=$val
attr Relais16 stateFormat {sprintf ("%s",ReadingsVal($name,"Relais",0))}
attr Relais16 webCmd Relais:on Relais:off


Wobei xxx.xxx.xxx.xxx die IP Adresse ist.
und bei pw=admin "admin" das Default-Passwort von der Weboberfläche des Gerätes ist.

Und wie im Bild kann dat denn aussehen

Und Tschüß
Voller
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 05 Januar 2016, 14:55:13
Hi Stefan,

hervorragende Erweiterung mit JSON :)

Eine Frage zum neuen Modul: Könnte man mit dem neuen Modul auch die sid via JSON suchen lassen? also geht auch sowas wie sid01JSON? Ich habe hier ein Gerät, was die initiale Anmeldung ebenfalls via JSON macht.

Und eine Frage generell (Bin nicht sicher ob das schon jemals ging, daher ;) )
Wenn ich mein Device so mit Attributen versehe:
attr mydevice getData {"jsonrpc":"2.0","id":1,"method":"call","params":["%%value1%%","%%value2%%",%%value3%%]}
attr mydevice replacement01Mode text
attr mydevice replacement01Regex %%value1%%
attr mydevice replacement02Mode text
attr mydevice replacement02Regex %%value2%%
attr mydevice replacement03Mode text
attr mydevice replacement03Regex %%value3%%

attr mydevice get01Name color
attr mydevice get01Replacement01Value ledd
attr mydevice get01Replacement02Value get
attr mydevice get01Replacement03Value {"device_status":true}
attr mydevice get01JSON result_02_color
attr mydevice get01MaxAge 300
attr mydevice get01MaxAgeReplacement "offline"
attr mydevice get01MaxAgeReplacementMode text


Sollte bei Aufruf von get mydevice color nicht das internal Reading "data" in etwa so aussehen?
{"jsonrpc":"2.0","id":81,"method":"call","params":["ledd","get",{"device_status":true}]}
Denn stattdessen sieht es so aus:
{"jsonrpc":"2.0","id":1,"method":"call","params":["ledd","%%value2%%",%%value3%%]}
was leider natürlich nicht funktioniert ;)

Wollte nur sicherstellen, dass das nicht ein Bug ist ;)

Viele Grüße,
Uli


Edit: Noch eins: Es wäre cool wenn nicht nur set[0-9]+NoArg ginge, sondern auch get[0-9]+NoArg, gleiches auch für get[0-9]+Hint, get[0-9]+Min, get[0-9]+Max
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Januar 2016, 16:08:18
Hallo Uli,

vielen Dank für's Testen und für Deine Anregungen!
Den Fehler mit den Replacements schau ich mir am Wochenende an. Spontan sieht das nach Bug aus.
Die Sid auch per JSON oder XPath holen zu können klingt auch sinnvoll.

Die Idee mit GetXNoArg verstehe ich aber noch nicht.
Bei Set ist das Attribut nötig, damit man einen Set-Parameter ohne Wert setzen kann - also statt

set gerät power 1

nur

set gerät on


Ein Get bekommt ja nie einen Wert mit. Was wäre dann die Funktion von NoArg?
Das gleiche gilt für die Min- und Max Attribute. Die prüfen den eingegebenen Wert bei Set. Bei einem Get frage ich den Wert aber ab und eine Eingabeprüfung kann gar nicht erfolgen oder wie hast Du das gemeint?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 09 Januar 2016, 13:38:24
Hi Stefan,

danke fürs Feedback!

[quote author=StefanStrobel link=topic=45176.msg386790#msg386790 date=1452179298]Ein Get bekommt ja nie einen Wert mit. Was wäre dann die Funktion von NoArg?

Prinzipiell gebe ich dir recht - ich hatte damit kalkuliert, dass du dann bei den Werten auch :noArg zurückgibst (also beispielsweise reload:noArg, was dann zu keinem Eingabefeld führt und dem Nutzer in der Anzeige das set DEVICE reload zeigt), was du aber wohl gar nicht tust, wenn ich das hier teste. Meine Idee war daher es sozusagen explizit zu machen, dass kein Wert übergeben werden muss und damit auch die Eingabemöglichkeiten in FHEMWEB gar nicht gegeben sind. Derzeit kann ich einem Get Befehl durchaus noch Parameter mitgeben, da das Eingabefeld aufgrund der fehlenden Übergabe von :noArg trotzdem angezeigt wird.

Meine Idee wäre gewesen zu sagen, dass ich einen bestimmten wert holen möchte und das daher allgemein halten will (also nicht für jeden Wert ein einzelnes Reading festlegen). Als Beispiel: Ich will das Wetter für eine bestimmte Stadt (nicht meine Default-City) holen - was beim Weather Modul, dann eben ein get DEVICE city xyz ist. Oder ich will die Abfahrtszeit einer Bahn für eine bestimmte Uhrzeit holen, welche dynamisch übergeben wird. Ich sehe, dass ich dafür einfach einen set-Befehl nehmen kann, keine Frage - ich war da nur von anderen Modulen anderes gewöhnt, sorry :)

Hoffe das macht es klarer?

Viele Grüße,
Uli
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Januar 2016, 18:48:20
Hi Uli,

eigentlich eine gute Idee. Das wären dann Zusatzparameter bei einem Get, die wie bei Set in die URL, Header oder Daten eingebaut werden können. Ich schau mal wie viel Aufwand es ist, das auch noch einzubauen.

Die anderen Dinge hab ich schon eingebaut, aber die Doku fehlt noch...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Januar 2016, 20:57:37
Gerade habe ich nochmal eine neue Version an den ersten Post in diesem Thread angehängt. Ich habe weitere Bugs behoben und ein paar der Anregungen von Uli sind auch schon umgesetzt.

Wer eine Session-Id als Cookie benötigt, kann mal versuchen anstelle von eigenen Headern mit "Cookie: ... $sid" und IdRegex Attributen einfach das Attribut enableCookies auf 1 zu setzen. Dann sollte das HTTPMOD Gerät selbst Cookies in HTTP-Responses extrahieren und speichern und dann bei den nächsten Requests wieder als Cookie-Header mitschicken.
Ich konnte das leider bisher nur sehr wenig testen. Feedback wäre daher besonders willkommen.

Bei der Extraktion einer Session Id auf die manuelle Art (wenn es kein HTTP-Cookie ist) kann man nun auch JSON und XPath verwenden. Wo es bisher nur eine IdRegex gab, gibt es jetzt auch idJSON, idXPath und idXPath-Strict als Optionen.

Ebenso kann zur Erkennung, dass eine Authentisierung nötig ist, jetzt auch JSON und XPath statt einer Regex verwendet werden.
Die Attribute reAuthJSON, reAuthXPath etc. sind in der Doku im Modul näher beschrieben.

In der Doku habe ich auch beschrieben, wie man das eingebaute Ersetzen von $val bei Sets und $sid für die session Id durch eigene Replacements realisieren kann. Damit könnte man z.B. auch mehrere Werte, die bei einem Set als Liste übergeben werden, an verschiedene Stellen eines HTTP Requests einbauen.

Gruss
    Stefan



Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: zurli am 15 Januar 2016, 21:50:54
Hallo Stefan

Diese Version von HTTPMOD ist genau was ich brauche.
Ich habe eine bestehende Hausautomation, welche ich mit http://192.168.xx.yy/status.xml auslesen kann.

Gerne möchte ich nun mit FHEM weitere Sensoren hinzufügen und diese auf FHEM anzeigen.
Damit ich aber auch das Licht und die Markisen steuern kann muss ich den Status der bestehenden Hausautomation auslesen und den Status an FHEM übergeben.

Irgendwie komme ich nun aber nicht auf das richtige reading01XPath-Strict Attribut.

Mein xml sieht folgendermassen aus
<status>
<time>21:43</time>
<date>16-01-15</date>
<day>4</day>
<msg>0</msg>
<asrc zone="0">5</asrc>
<asrc zone="1">5</asrc>
<asrc zone="2">0</asrc>
<asrc zone="3">5</asrc>
<var nr="10">0</var>
<var nr="101">1</var>
<var nr="11">0</var>
<var nr="110">0</var>
<var nr="111">0</var>
<var nr="112">0</var>
<var nr="113">0</var>
<var nr="114">0</var>
<var nr="12">1</var>
<var nr="120">0</var>
<var nr="121">25</var>
<var nr="122">1</var>
<var nr="123">0</var>
<var nr="124">0</var>
<var nr="13">0</var>
<var nr="130">0</var>
<var nr="131">25</var>
<var nr="132">1</var>
<var nr="133">0</var>
<var nr="140">0</var>
<var nr="141">0</var>
<var nr="142">0</var>
<var nr="143">0</var>
<var nr="144">0</var>
<var nr="145">0</var>
<var nr="146">0</var>
<var nr="148">0</var>
<var nr="149">10</var>
<var nr="150">0</var>
<var nr="160">0</var>
<var nr="161">0</var>
<var nr="162">0</var>
<var nr="163">0</var>
<var nr="164">0</var>
<var nr="168">0</var>
<var nr="169">5</var>
<var nr="191">1</var>
<var nr="20">0</var>
<var nr="201">0</var>
<var nr="202">0</var>
<var nr="203">0</var>
<var nr="204">1</var>
<var nr="21">0</var>
<var nr="210">1</var>
<var nr="211">0</var>
<var nr="212">0</var>
<var nr="22">0</var>
<var nr="23">0</var>
<var nr="250">0</var>
<var nr="251">0</var>
<var nr="252">0</var>
<var nr="31">1</var>
<var nr="32">13</var>
<var nr="33">0</var>
<var nr="34">0</var>
<var nr="38">1</var>
<var nr="39">6</var>
<var nr="41">16</var>
<var nr="42">1</var>
<var nr="43">1</var>
<var nr="44">0</var>
<var nr="440">1</var>
<var nr="441">0</var>
<var nr="442">0</var>
<var nr="50">0</var>
<var nr="501">1</var>
<var nr="502">0</var>
<var nr="503">0</var>
<var nr="504">0</var>
<var nr="505">1</var>
<var nr="506">0</var>
<var nr="507">1</var>
<var nr="51">0</var>
<var nr="52">0</var>
<var nr="53">1</var>
<var nr="54">0</var>
<var nr="55">0</var>
<var nr="56">0</var>
<var nr="701">46</var>
<var nr="702">46</var>
<var nr="705">50</var>
<var nr="708">47</var>
<var nr="709">41</var>
<var nr="711">49</var>
<var nr="712">50</var>
<var nr="713">52</var>
<var nr="714">46</var>
<var nr="715">49</var>
<var nr="716">51</var>
<var nr="721">43</var>
<var nr="725">45</var>
<var nr="751">46</var>
<var nr="752">44</var>
<var nr="755">48</var>
<var nr="758">46</var>
<var nr="759">42</var>
<var nr="761">48</var>
<var nr="762">48</var>
<var nr="763">48</var>
<var nr="764">45</var>
<var nr="765">49</var>
<var nr="766">50</var>
<var nr="771">44</var>
<var nr="775">44</var>
<var nr="80">0</var>
<var nr="801">0</var>
<var nr="802">0</var>
<var nr="803">1</var>
<var nr="804">1</var>
<var nr="805">0</var>
<var nr="806">1447</var>
<var nr="809">0</var>
<var nr="82">1</var>
<var nr="90">1</var>
<var nr="900">128</var>
<var nr="901">0</var>
<var nr="902">0</var>
<var nr="903">0</var>
<var nr="904">0</var>
<var nr="905">0</var>
<var nr="906">0</var>
<var nr="907">1</var>
<var nr="908">0</var>
<var nr="909">99</var>
<var nr="91">0</var>
<var nr="910">0</var>
<var nr="911">0</var>
<var nr="92">0</var>
<var nr="93">0</var>
<var nr="94">0</var>
<var nr="95">0</var>
<var nr="98">0</var>
<var nr="99">8</var>
<var nr="999">0</var>
<playlist zone="0">URL:streaming.swisstxt.ch/m/drs3/mp3_128</playlist>
<track zone="0"></track>
<playlist zone="1"></playlist>
<track zone="1"></track>
<playlist zone="2"></playlist>
<track zone="2"></track>
<playlist zone="3"></playlist>
<track zone="3"></track>
<partylist></partylist>
<partytrack></partytrack>
</status>


Ich habe verschiedene Versionen von reading01XPath-Strict versucht, jedoch stimmt das Ergebniss nicht.


attr visu reading01XPath-Strict //var/text()
attr visu reading01XPath-Strict //var[2]/text()


Folgende Readings werden aufgelistet mit //var/text()


Variable-1 0 15.01.16 21:44
Variable-10 0 15.01.16 21:44
Variable-100 45 15.01.16 21:44
Variable-101 49 15.01.16 21:44
Variable-102 50 15.01.16 21:44
Variable-103 44 15.01.16 21:44
Variable-104 44 15.01.16 21:44
Variable-105 0 15.01.16 21:44
Variable-106 0 15.01.16 21:44
Variable-107 0 15.01.16 21:44
Variable-108 1 15.01.16 21:44
Variable-109 1 15.01.16 21:44
Variable-11 25 15.01.16 21:44
Variable-110 0 15.01.16 21:44
Variable-111 1447 15.01.16 21:44
Variable-112 0 15.01.16 21:44
Variable-113 1 15.01.16 21:44
Variable-114 1 15.01.16 21:44
Variable-115 128 15.01.16 21:44
Variable-116 0 15.01.16 21:44
Variable-117 0 15.01.16 21:44
Variable-118 0 15.01.16 21:44
Variable-119 0 15.01.16 21:44
Variable-12 1 15.01.16 21:44
Variable-120 0 15.01.16 21:44
Variable-121 0 15.01.16 21:44
Variable-122 1 15.01.16 21:44
Variable-123 0 15.01.16 21:44
Variable-124 115 15.01.16 21:44
Variable-125 0 15.01.16 21:44
Variable-126 0 15.01.16 21:44
Variable-127 0 15.01.16 21:44
Variable-128 0 15.01.16 21:44
Variable-129 0 15.01.16 21:44
Variable-13 0 15.01.16 21:44
Variable-130 0 15.01.16 21:44
Variable-131 0 15.01.16 21:44
Variable-132 0 15.01.16 21:44
Variable-133 8 15.01.16 21:44
Variable-134 0 15.01.16 21:44
Variable-14 0 15.01.16 21:44
Variable-15 0 15.01.16 21:44
Variable-16 0 15.01.16 21:44
Variable-17 25 15.01.16 21:44
Variable-18 1 15.01.16 21:44
Variable-19 0 15.01.16 21:44
Variable-2 1 15.01.16 21:44
Variable-20 0 15.01.16 21:44
Variable-21 0 15.01.16 21:44
Variable-22 0 15.01.16 21:44
Variable-23 0 15.01.16 21:44
Variable-24 0 15.01.16 21:44
Variable-25 0 15.01.16 21:44
Variable-26 0 15.01.16 21:44
Variable-27 0 15.01.16 21:44
Variable-28 10 15.01.16 21:44
Variable-29 0 15.01.16 21:44
Variable-3 0 15.01.16 21:44
Variable-30 0 15.01.16 21:44
Variable-31 0 15.01.16 21:44
Variable-32 0 15.01.16 21:44
Variable-33 0 15.01.16 21:44
Variable-34 0 15.01.16 21:44
Variable-35 0 15.01.16 21:44
Variable-36 5 15.01.16 21:44
Variable-37 1 15.01.16 21:44
Variable-38 0 15.01.16 21:44
Variable-39 0 15.01.16 21:44
Variable-4 0 15.01.16 21:44
Variable-40 0 15.01.16 21:44
Variable-41 0 15.01.16 21:44
Variable-42 1 15.01.16 21:44
Variable-43 0 15.01.16 21:44
Variable-44 1 15.01.16 21:44
Variable-45 0 15.01.16 21:44
Variable-46 0 15.01.16 21:44
Variable-47 0 15.01.16 21:44
Variable-48 0 15.01.16 21:44
Variable-49 0 15.01.16 21:44
Variable-5 0 15.01.16 21:44
Variable-50 0 15.01.16 21:44
Variable-51 0 15.01.16 21:44
Variable-52 1 15.01.16 21:44
Variable-53 13 15.01.16 21:44
Variable-54 0 15.01.16 21:44
Variable-55 0 15.01.16 21:44
Variable-56 1 15.01.16 21:44
Variable-57 6 15.01.16 21:44
Variable-58 16 15.01.16 21:44
Variable-59 1 15.01.16 21:44
Variable-6 0 15.01.16 21:44
Variable-60 1 15.01.16 21:44
Variable-61 0 15.01.16 21:44
Variable-62 1 15.01.16 21:44
Variable-63 0 15.01.16 21:44
Variable-64 0 15.01.16 21:44
Variable-65 0 15.01.16 21:44
Variable-66 1 15.01.16 21:44
Variable-67 0 15.01.16 21:44
Variable-68 0 15.01.16 21:44
Variable-69 0 15.01.16 21:44
Variable-7 0 15.01.16 21:44
Variable-70 1 15.01.16 21:44
Variable-71 0 15.01.16 21:44
Variable-72 1 15.01.16 21:44
Variable-73 0 15.01.16 21:44
Variable-74 0 15.01.16 21:44
Variable-75 1 15.01.16 21:44
Variable-76 0 15.01.16 21:44
Variable-77 0 15.01.16 21:44
Variable-78 0 15.01.16 21:44
Variable-79 47 15.01.16 21:44
Variable-8 0 15.01.16 21:44
Variable-80 47 15.01.16 21:44
Variable-81 50 15.01.16 21:44
Variable-82 47 15.01.16 21:44
Variable-83 41 15.01.16 21:44
Variable-84 49 15.01.16 21:44
Variable-85 50 15.01.16 21:44
Variable-86 52 15.01.16 21:44
Variable-87 46 15.01.16 21:44
Variable-88 49 15.01.16 21:44
Variable-89 51 15.01.16 21:44
Variable-9 1 15.01.16 21:44
Variable-90 43 15.01.16 21:44
Variable-91 45 15.01.16 21:44
Variable-92 46 15.01.16 21:44
Variable-93 44 15.01.16 21:44
Variable-94 48 15.01.16 21:44
Variable-95 46 15.01.16 21:44
Variable-96 42 15.01.16 21:44
Variable-97 48 15.01.16 21:44
Variable-98 48 15.01.16 21:44
Variable-99 48 15.01.16 21:44


Ich denke die Lösung liegt zum greiffen nahe, leider komme ich aber nicht drauf.
Herzlichen Dank für Hilfe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Januar 2016, 14:43:25
Hallo,

ich habe nochmal eine neue Version an den ersten post angehängt.
Nun kann man bei get auch Parameter mitgeben, z.B.

get MeinGerät generic 24

oder

get Wetter temp 16.1.15


bei der Get-Option sollte man dafür ein Attribut TextArg mit angeben.
Das Einbauen der Werte kann entweder wie bei set über $val gemacht werden oder man kann die Replacements auch selbst definieren, z.B.:

attr PM getData {"get" :["%value%.value"]}
attr PM getHeader1 Content-Type: application/json
attr PM getHeader2 Accept: */*

attr PM get10Name generic
attr PM get10TextArg
attr PM get10Replacement01Value value

attr PM replacement01Mode internal
attr PM replacement01Regex %value%


Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Januar 2016, 15:10:25
Hallo zurli,

welche Werte willst Du denn haben?
mit einem XPath wie //var[@nr="99"]/text() bekommst Du den Wert mit nr=99.

Die automatische Nummerierung bei //var/text() wird Dir nicht viel helfen, da die Nummer nur Indizes im Ergebnis-Array sind und nicht den nr= Attributen in den Ausgangsdaten entsprechen.
Ich würde für jeden Wert, den Du haben möchtest eigene Attribute mit einem sinnvollen Namen und dem richtigen XPath per @nr= definieren.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: zurli am 17 Januar 2016, 09:02:56
Hallo Stefan

Herzlichen Dank für die Erklärung. Wie viel ich brauche hängt davon ab, was ich von meiner bestehenden Hausautomation alles angezeigt haben will in FHEM.

Wenn ich also die bestehende VISU ablösen will, müsste ich eigentlich alle übernehmen.
So werde ich also nicht darum herum kommen, alle Variablen zu benennen und einzeln auszulesen.
Ist eigentlich auch nicht so schlimm, da ich ja die Nummern sowieso zuweisen muss.

Gruss Zurli
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 17 Januar 2016, 14:11:19
MaxAge gefällt mir gut, wenn ein Device offline ist und nicht mehr aktualisiert.

Mein Miele@home Gateway XGW 3000 sendet nur die relevanten Daten. Hier z.B. das aktuelle Ergebnis für die Waschmaschine:
<?xml version="1.0" encoding="UTF-8"?>
<device>
<information>
<key name="Gerät" value="Waschautomat" />
<key name="Gerätestatus" value="Aus" />
</information>
<actions>
</actions>
</device>


Vor dem Ausschalten gab es noch andere Werte wie z.b. die Restzeit, die nun fehlen. Mit MageAge könnte ich diese nach 5 Minuten z.B. auf "-" setzen, jedoch werden dann vorübergehend falsche Werte angezeigt. Gibt es auch eine Variante, wie mit Regex nicht mehr gefundene Werte sofort ersetzt werden können? Ein Default-Regex-Wert würde helfen, keine Ahnung ob so etwas möglich ist. Hier ein Ausschnitt meiner akutellen Konfiguration:

attr K.Waschmaschine readingsName_Geraetestatus Geraetestatus
attr K.Waschmaschine readingsRegex_Geraetestatus "Gerätestatus"[^"]+"([^"]+)"
attr K.Waschmaschine readingsName_Restzeit Restzeit
attr K.Waschmaschine readingsRegex_Restzeit "Restzeit"[^"]+"([^"]+)"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 17 Januar 2016, 18:20:07
Hallo ares,

wenn Du die Werte z.B. alle 60 Sekunden abrufst und MaxAge z.B. auf 50 Sekunden stellst, dann greift MaxAge sofort wenn die Werte nicht erfolgreich gelesen werden, nicht aber, wenn sie korrekt gelesen werden konnten.

Die MaxAge-Prüfung erfolgt in der Lese-Funktion, entweder nach einem Lesefehler oder nach dem Auswerten aller Readings...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 17 Januar 2016, 18:50:56
Hallo Stefan,

damit ist MaxAge perfekt, danke für die Erklärung.

Viele Danke
ares
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 18 Januar 2016, 09:05:13
Moin moin,

habe auch einmal die JSON Variante von HTTPMOD ausprobiert, aber bekomme es leider nicht hin.
Ich habe zuerst mit extractJSON mir die gesamten Daten in Readings packen lassen. Das hat auch gut funktioniert, ich habe viele Readings bekommen.
Nun wollte ich ein einzelnes eigenes Reading ausprobieren und habe mir eines der herausextrahierten als get01JSON und get02JSON definiert. Bei dem darauffolgenden Request kommt nur ein
JSON: Read response to update didn't match any Reading

Das definerte HTTPMOD lautet
define JSON HTTPMOD http://www.spritpreisrechner.at/espritmap-app/GasStationServlet 300
attr JSON userattr disable extractAllJSON get01Data get01JSON get01Name get02JSON get02Name getHeader1 getHeader2 requestData.*
attr JSON get01JSON 01_address
attr JSON get01Name 1_Adresse
attr JSON get02JSON 01_spritPrice_01_amount
attr JSON get02Name 1_Sprit
attr JSON getHeader1 Content-Type: application/json
attr JSON getHeader2 Accept: */*
attr JSON requestData.* data=["checked","DIE",15.414262484145,47.057105360725,15.494085024429,47.08048974931]


Der Response ist ein JSON Array und wird z.B. vom extractJSON mit
01_spritPrice_01_amount     0.909
extrahiert. Ein
attr JSON get02JSON 01_spritPrice_01_amount
zeigt aber keine Wirkung. Wo ist der Fehler? Kann ich die extrahierten Werte nicht einfach als getXXJSON nehmen? Wie bekomme ich dann JSON Arrays in die Abfrage? Das Beispiel im ersten Post ist ja nur mit JSON Objekten gemacht.

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: grooves am 18 Januar 2016, 14:57:24
Hallo,

das MaxAge war genau wonach ich gesucht habe, :-)
leider passiert bei meiner config kein Replacement,
die alten Werte bleiben stehen,
auch wenn ich den Sensor offline setze.
was mach ich falsch.

Danke,
Micha

define ESP01 HTTPMOD http://192.168.5.128/stat.tpl 300
attr ESP01 userattr icon readingsExpr_S02 readingsExpr_S03 readingsExpr_S04 readingsName_S01 readingsName_S02 readingsName_S03 readingsName_S04 readingsRegex_S01 readingsRegex_S02 readingsRegex_S03 readingsRegex_S04 stateFormat
attr ESP01 group Plots
attr ESP01 icon icoKLIMA
attr ESP01 readingsExpr_S02 {sprintf("%.1f",$val)}
attr ESP01 readingsExpr_S03 {($val eq "+85.00") ? "": sprintf("%.1f",$val)}
attr ESP01 readingsExpr_S04 {($val eq "+85.00") ? "": sprintf("%.1f",$val)}
attr ESP01 readingsName_S01 Voltage
attr ESP01 readingsName_S02 Innen
attr ESP01 readingsName_S03 Balkon
attr ESP01 readingsName_S04 Aussen
attr ESP01 readingsRegex_S01 VDD33[: ]+([\d\.]+)
attr ESP01 readingsRegex_S02 Sensor 1[: ]+([+-][\d\.]+)
attr ESP01 readingsRegex_S03 Sensor 2[: ]+([+-][\d\.]+)
attr ESP01 readingsRegex_S04 Sensor 3[: ]+([+-][\d\.]+)
attr ESP01 readingMaxAge 310
attr ESP01 readingMaxAgeReplacement "--"
attr ESP01 readingMaxAgeReplacementMode text
attr ESP01 room Sensors
attr ESP01 stateFormat {sprintf("A: %.1f °C, I: %.1f °C, B: %.1f °C", ReadingsVal($name,"Aussen",0), ReadingsVal($name,"Innen",0), ReadingsVal($name,"Balkon",0))}

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 19 Januar 2016, 12:13:04
ich versuche gerade aus einer liste von verfügbaren fw-dateien eine liste der betreffenden geräte zu erstellen. da die liste bei jedem abruf eine unbekannte anzahl an geräten beinhalten kann, würde ich gerne die readings automatisch anlegen lassen.

der gesuchte text (rot) ist immer folgendermassen gekennzeichnet:

Zitat<p>Kurz Bez.: HM-LC-Dim1T-Pl-3 </p>

und kann zb mit dieser regex ausgelesen werden:

(?s)<p>Kurz.Bez.:.([a-zA-Z0-9\-]+).</p>

wenn ich die regex quasi verdoppele, bekomme ich auch automatisch 2 readings für die 2 capture groups:

(?s)<p>Kurz.Bez.:.([a-zA-Z0-9\-]+).</p>.*?<p>Kurz.Bez.:.([a-zA-Z0-9\-]+).</p>

aber wie bekomme ich es hin, dass automatisch alle vorkommen gefunden werden, ohne zu wissen, wie oft der match existiert?

Internals:
   BUSY       0
   DEF        http://www.eq-3.de/db_action/download_suche.php 3600
   Interval   3600
   LASTSEND   1453192550.44278
   MainURL    http://www.eq-3.de/db_action/download_suche.php
   NAME       eq3
   NR         558
   STATE      ???
   TRIGGERTIME 1453195821.00521
   TRIGGERTIME_FMT 2016-01-19 10:30:21
   TYPE       HTTPMOD
   addr       http://www.eq-3.de:80
   buf        HTTP/1.1 200 OK

Date: Tue, 19 Jan 2016 08:35:50 GMT

Content-Type: text/html

Connection: close

Server: Apache

Cache-Control: max-age=86400

Expires: Wed, 20 Jan 2016 08:35:50 GMT



<div id="download_suchergebnis">
<p class="mystrong">20 Ergebnisse gefunden</p>

<div class="downloadliste_v2">


<div class="row head">

<div class="col col-1"><p>Name</p></div>
<div class="col col-2"><p>Notes</p></div>
<div class="col col-3"><p>Download</p></div>

</div><!-- ./row -->

<div id='page_1' class='page'>
<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=145">Funk-Dimmaktor 1-fach, Phasenabschnitt, Zwischenstecker Firmware V2.9.5</a>
</p>
<p>Kurz Bez.: HM-LC-Dim1T-Pl-3 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 132087 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_HM-LC-Dim1T-Pl-3_update_V2_9_0005_160113.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>13.01.2016</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Dim1T-Pl-3_update_V2_9_0005_160113.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">58,56 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=146">Funk-Dimmaktor 1-fach, Phasenanschnitt, Zwischenstecker Firmware V2.9.7</a>
</p>
<p>Kurz Bez.: HM-LC-Dim1L-Pl-3 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 132078 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_HM-LC-Dim1L-Pl-3_update_V2_9_0007_160113.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>13.01.2016</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Dim1L-Pl-3_update_V2_9_0007_160113.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">58,78 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=147">Funk-Dimmaktor 1-fach, PWM LED, Zwischendeckenmontage Firmware V2.9.5</a>
</p>
<p>Kurz Bez.: HM-LC-Dim1PWM-CV </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 99444 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelo_HM-LC-Dim1PWM-CV_update_V2_9_0005_160113g.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>13.01.2016</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Dim1PWM-CV_update_V2_9_0005_160113.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">56,18 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=148">Funk-Dimmaktor 1-fach für Markenschalter, Phasenabschnitt, Unterputzmontage Firmware V2.9.5</a>
</p>
<p>Kurz Bez.: HM-LC-Dim1TPBU-FM </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 103020 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_HM-LC-Dim1TPBU-FM_update_V2_9_0005_160113.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>13.01.2016</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Dim1TPBU-FM_update_V2_9_0005_160113.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">58,75 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=140">HM-CCU2 Firmware 2.15.5</a>
</p>
<p>Download-Art: Firmware </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.15.5/changelog.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>20.10.2015</p> <p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.15.5/HM-CCU-2.15.5.tar.gz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">76,66 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=141">8-Kanal Empfangsmodul Firmware V1.2</a>
</p>
<p>Kurz Bez.: HM-MOD-Re-8 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 132143A2 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_hm-mod-re-8_update_V1_2_150911.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>11.09.2015</p> <p><a href="/Downloads/Software/Firmware/hm-mod-re-8_update_V1_2_150911.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">76,07 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=139">Funk-Wandthermostat Firmware V1.3</a>
</p>
<p>Kurz Bez.: HM-TC-IT-WM-W-EU </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 132030 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_hm_tc_it_wm_w_eu_update_V1_3_002_150827.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>27.08.2015</p> <p><a href="/Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_3_002_150827.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">70,12 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=115">HM-CCU1 Firmware 1.519</a>
</p>
<p>Kurz Bez.: HM-Cen-3-1 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 76777/83355 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/HM-CCU1-Firmware_Updates/1.519/changelog.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>24.08.2015</p> <p><a href="/Downloads/Software/HM-CCU1-Firmware_Updates/1.519/hm-ccu-firmware-1.519.zip" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">9,33 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->

</div><!-- page_1 --><div id='page_2' class='page'>
<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=131">Funk-Rollladenaktor 1-fach für Markenschalter Firmware V2.8.2</a>
</p>
<p>Kurz Bez.: HM-LC-Bl1PBU-FM </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 103038 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_HM-LC-Bl1PBU-FM.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>12.08.2015</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_8_2_150713.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">43,04 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=132">Funk-Schaltaktor 1-fach für Markenschalter Firmware V2.8.2</a>
</p>
<p>Kurz Bez.: HM-LC-Sw1PBU-FM </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 103029 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_HM-LC-Sw1PBU-FM.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>12.08.2015</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Sw1PBU-FM_update_V2_8_2_150713.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">44,46 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=130">HM-CCU2 Firmware 2.15.2</a>
</p>
<p>Download-Art: Firmware </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.15.2/HM-CCU2-Changelog-2.15.2.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>04.08.2015</p> <p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.15.2/HM-CCU-2.15.2.tar.gz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">76,65 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=123">HM-CCU1 Firmware 1.518</a>
</p>
<p>Kurz Bez.: HM-Cen-3-1 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 76777/83355 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/HM-CCU1-Firmware_Updates/1.518/changelog.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>14.04.2015</p> <p><a href="/Downloads/Software/HM-CCU1-Firmware_Updates/1.518/hm-ccu-firmware-1.518.zip" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">9,29 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=126">Funk-Bewegungsmelder mit Taster Firmware V1.1.2</a>
</p>
<p>Kurz Bez.: HM-Sen-MDIR-WM-55 </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 140848 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog-HM-Sen-MDIR-WM55.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>14.04.2015</p> <p><a href="/Downloads/Software/Firmware/HM-Sen-MDIR-WM55_update_V1_1_2_150413.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">50,36 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=120">HM-CCU2 Firmware 2.13.7</a>
</p>
<p>Download-Art: Firmware </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.13.7/HM-CCU2-Changelog-2.13.7.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>19.03.2015</p> <p><a href="/Downloads/Software/HM-CCU2-Firmware_Updates/HM-CCU2-2.13.7/HM-CCU-2.13.7.tar.gz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">76,39 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=110">HomeMatic Funk-Schaltaktor 1-fach mit Leistungsmessung, Zwischenstecker Firmware V2.5</a>
</p>
<p>Kurz Bez.: HM-ES-PMSw1-Pl </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 130248 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog-HM-ES-PMSw1-Pl.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>16.03.2015</p> <p><a href="/Downloads/Software/Firmware/HM-ES-PMSw1-Pl_update_V2_5_0009_150217.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">64,95 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=86">Funk-Heizkörperthermostat Firmware V1.4</a>
</p>
<p>Kurz Bez.: HM-CC-RT-DN </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 105155 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_hm_cc_rt_dn_update_V1_4_001_141020.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>20.10.2014</p> <p><a href="/Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">76,93 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->

</div><!-- page_2 --><div id='page_3' class='page'>
<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=101">Funk-Wandthermostat Firmware V1.2</a>
</p>
<p>Kurz Bez.: HM-TC-IT-WM-W-EU </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 132030 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog_hm_tc_it_wm_w_eu_update_V1_2_001_141020.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>20.10.2014</p> <p><a href="/Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_2_001_141020.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">69,79 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=106">Funk-Regensensor Firmware V1.4</a>
</p>
<p>Kurz Bez.: HM-Sen-RD-O </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 130220 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/changelog-hm-sen-rd-o.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>18.09.2014</p> <p><a href="/Downloads/Software/Firmware/hm-sen-rd-o_update_V1_4_003_130930.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">38,47 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row even">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=102">Funk-Rollladenaktor für Markenschalter Firmware V2.3</a>
</p>
<p>Kurz Bez.: HM-LC-BI1PBU-FM </p> <p>Download-Art: Firmware </p> <p>Artikel-Nr.: 103038 </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Firmware/readme-hm-lc-bl1pbu-fm.txt" target="_Blank">ReadMe</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>15.07.2014</p> <p><a href="/Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_3_0002_131204.tgz" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">42,27 KB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->


<div class="row odd">

<div class="col col-1">
<p class="name">
<a href="/downloads.html?kat=download&id=21">HM-Sec-Cen Firmware 1.7</a>
</p>
<p>Download-Art: Firmware </p>
</div><!-- /.col-1 -->

<div class="col col-2">

<p><a href="/Downloads/Software/Alarmzentrale_HM-Sec-Cen/HM-Sec-Cen-1.7/HM-Sec-Cen-changelog-1.7.txt" target="_Blank">Changelog</a></p>

</div><!-- /.col-2 -->

<div class="col col-3">

<p class='datum'>21.03.2012</p> <p><a href="/Downloads/Software/Alarmzentrale_HM-Sec-Cen/HM-Sec-Cen-1.7/HM-Sec-Cen-1.7.exe" target="_Blank"><img src="img/download.png" alt="Download" title="Download"></a></p>
<p class="size">145,29 MB</p>

</div><!-- /.col-3 -->

</div><!-- ./row -->

</div><!-- page_3 --><div id='pageination'><p class='mystrong'>3 Seiten</p><a href='page_1' class='active'>1</a><a href='page_2' class=''>2</a><a href='page_3' class=''>3</a></div><!-- pageination -->   </div><!-- /.download_rubrik_wrap -->
</div><!- /#download_suchergebnis -->
   code       200
   conn
   data       suche_in=62&suchtext=&themenbereich_1=99
   displayurl http://www.eq-3.de/db_action/download_suche.php
   header
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK

Date: Tue, 19 Jan 2016 08:35:50 GMT

Content-Type: text/html

Connection: close

Server: Apache

Cache-Control: max-age=86400

Expires: Wed, 20 Jan 2016 08:35:50 GMT
   hu_blocking 0
   hu_filecount 3
   ignoreredirects 0
   loglevel   4
   path       /db_action/download_suche.php
   protocol   http
   redirects  0
   timeout    2
   url        http://www.eq-3.de/db_action/download_suche.php
   QUEUE:
   Readings:
     2016-01-19 09:30:26   LAST_ERROR      write to to http://www.eq-3.de:80 timed out
     2016-01-19 09:35:50   MATCHED_READINGS model
     2016-01-19 09:35:50   model           HM-LC-Dim1T-Pl-3
   Request:
     data       suche_in=62&suchtext=&themenbereich_1=99
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.eq-3.de/db_action/download_suche.php
   Defptr:
     Readingbase:
       model      reading
     Readingnum:
       model      01
     Readingoutdated:
     Readingsubnum:
       model
   Sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   reading01Name model
   reading01Regex (?s)<p>Kurz.Bez.:.([a-zA-Z0-9\-]+).</p>
   requestData.* suche_in=62&suchtext=&themenbereich_1=99
   room       eq3
   showError  1
   showMatched 1
   userattr   enableControlSet event-on-change-reading reading01Name reading01Regex requestData.* showError showMatched
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Januar 2016, 23:22:18
Hallo Tim,

Mit get01Name und get01JSON definierst Du einen Get Befehl. Diese Anweisungen werden nicht für das Parsen der zyklischen Update Requests verwendet sondern nur für das Parsen der Antwort auf einen vom Get Befehl ausgelösten Request.
Mit reading01Name und reading01JSON sollte es klappen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Januar 2016, 23:40:12
Hallo Grooves,

Ich vermute das Problem liegt daran, dass Du noch die alte Syntax der Reading-Attribute verwendest.
(readingsNameXY statt reading01Name etc wie in der Doku und im Wiki beschrieben)
Poste doch mal einen Auszug aus dem Log mit Verbose 5.
Da sollte man sehen, was die MaxAge Funkktion macht.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Januar 2016, 23:54:19
Hallo Frank,

Hast Du es mal mit XPath probiert?
Da führen mehrere Matches automatisch zu mehreren Readings.
Um das auch mit Regexes hinzubekommen müsste ich noch ein neues Attribut einbauen, das beim Matchen die /g Option aktiviert. Wäre kein großer Aufwand und ich packe das mal auf die Wunschliste :-)

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 20 Januar 2016, 09:04:48
Moin,

ich hab da mal ne Frage. Mit dem neuem JSON Feature ist es um etliches leichter geworden sich die Spritpreise zu holen.
Ich hab alles so gemacht wie oben Beschrieben und ansich funktioniert es auch, nur wie bekomm ich es jetzt hin das er die Preise selbständig alle paar Minuten holt?
Muss ich dazu ein extra at definieren der die get Befehle ausführt oder reicht es bei der definition statt der 0 zum Beipsiel 900 anzugeben?

Hiermal mein define und die List Ausgabe:
define Sprit.Jet_Goettingen.SuperE5 HTTPMOD none 0
attr Sprit.Jet_Goettingen.SuperE5 userattr extractAllJSON get01JSON get01Name get01Poll get01PollDelay get02JSON get02Name getData getHeader1 getHeader2 getURL stateFormat
attr Sprit.Jet_Goettingen.SuperE5 alias Jet - Goettingen - Super - (05:00-23:00)
attr Sprit.Jet_Goettingen.SuperE5 get01JSON station_e5
attr Sprit.Jet_Goettingen.SuperE5 get01Name SuperE5
attr Sprit.Jet_Goettingen.SuperE5 get01Poll 1
attr Sprit.Jet_Goettingen.SuperE5 get01PollDelay 900
attr Sprit.Jet_Goettingen.SuperE5 get02JSON station_isOpen
attr Sprit.Jet_Goettingen.SuperE5 get02Name Status
attr Sprit.Jet_Goettingen.SuperE5 getHeader1 Content-Type: application/json
attr Sprit.Jet_Goettingen.SuperE5 getHeader2 Accept: */*
attr Sprit.Jet_Goettingen.SuperE5 getURL https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
attr Sprit.Jet_Goettingen.SuperE5 group Spritpreise
attr Sprit.Jet_Goettingen.SuperE5 room Spritpreise
attr Sprit.Jet_Goettingen.SuperE5 stateFormat SuperE5

Internals:
   BUSY       0
   DEF        none 0
   Interval   0
   JSONEnabled 1
   LASTSEND   1453276422.15616
   MainURL
   NAME       Sprit.Jet_Goettingen.SuperE5
   NR         37
   STATE      1.249
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       https://creativecommons.tankerkoenig.de:443
   buf        <gekürzt>
   code       200
   conn
   data
   displayurl https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
   header     Content-Type: application/json Accept: */*
   host       creativecommons.tankerkoenig.de
   httpheader <gekürzt>
   hu_blocking 0
   hu_filecount 3
   ignoreredirects 0
   loglevel   4
   path       /json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
   protocol   https
   redirects  0
   timeout    2
   url        https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
   value      0
   QUEUE:
   Readings:
     2016-01-20 08:53:42   Status          true
     2016-01-20 08:49:51   SuperE5         1.249
   Request:
     data
     header     Content-Type: application/json Accept: */*
     ignoreredirects 0
     retryCount 0
     type       get02
     url        https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
     value      0
   Defptr:
     Readingbase:
       Status     get
       SuperE5    get
     Readingnum:
       Status     02
       SuperE5    01
     Readingoutdated:
     Readingsubnum:
       Status
       SuperE5
   Sslargs:
Attributes:
   alias      Jet - Goettingen - Super - (05:00-23:00)
   get01JSON  station_e5
   get01Name  SuperE5
   get01Poll  1
   get01PollDelay 900
   get02JSON  station_isOpen
   get02Name  Status
   getHeader1 Content-Type: application/json
   getHeader2 Accept: */*
   getURL     https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey=
   group      Spritpreise
   room       Spritpreise
   stateFormat SuperE5
   userattr   extractAllJSON get01JSON get01Name get01Poll get01PollDelay get02JSON get02Name getData getHeader1 getHeader2 getURL stateFormat
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 20 Januar 2016, 09:11:51
Zitat von: StefanStrobel am 19 Januar 2016, 23:54:19
Hallo Frank,

Hast Du es mal mit XPath probiert?
Da führen mehrere Matches automatisch zu mehreren Readings.
Um das auch mit Regexes hinzubekommen müsste ich noch ein neues Attribut einbauen, das beim Matchen die /g Option aktiviert. Wäre kein großer Aufwand und ich packe das mal auf die Wunschliste :-)

Gruß
    Stefan
für xpath sind die tags im code wohl nicht geeignet. zumindestens habe ich das angenommen, nachdem ich die beispiele gesehen habe. ausserdem müsste ich wohl auch noch perl module laden, was ich meiner fritzbox ersparen möchte. deshalb wäre das neue attribut sehr schön. in einer eigenen sub mit HttpUtils_NonblockingGet funktioniert das sehr gut.

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 20 Januar 2016, 09:16:12
Zitatnur wie bekomm ich es jetzt hin das er die Preise selbständig alle paar Minuten holt?
da hast du freie wahl. entweder in die definition, oder über ein eigenes at/notify/doif, oder was auch immer.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 20 Januar 2016, 09:31:22
Zitat von: StefanStrobel am 19 Januar 2016, 23:22:18
Hallo Tim,

Mit get01Name und get01JSON definierst Du einen Get Befehl. Diese Anweisungen werden nicht für das Parsen der zyklischen Update Requests verwendet sondern nur für das Parsen der Antwort auf einen vom Get Befehl ausgelösten Request.
Mit reading01Name und reading01JSON sollte es klappen.

Gruß
    Stefan

Moin Stefan,

super, damit funktioniert es. Es gibt nur noch ein Problem mit den Umlauten: Im Internal Feld buf werden die Umlaute korrekt dargestellt. In meinem herausextrahiertem Reading sehe ich dann aber z.B. anstatt "Kasernstraße 14" ein "Kasernstra�e 14".
Nochmal mein define:


define JSON HTTPMOD http://www.spritpreisrechner.at/espritmap-app/GasStationServlet 5
attr JSON userattr disable extractAllJSON get01Data get01JSON get01Name get02JSON get02Name getHeader1 getHeader2 reading01JSON reading01Name reading02JSON reading02Name requestData.* stateFormat
attr JSON getHeader1 Content-Type: application/json
attr JSON getHeader2 Accept: */*
attr JSON reading01JSON 01_address
attr JSON reading01Name 1_Adresse
attr JSON reading02JSON 01_spritPrice_01_amount
attr JSON reading02Name 1_Sprit
attr JSON requestData.* data=["checked","DIE",15.414262484145,47.057105360725,15.494085024429,47.08048974931]
attr JSON stateFormat 1_Adresse: 1_Sprit €



Hier auch noch eine Idee dazu, was ich falsch gemacht habe?

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 20 Januar 2016, 10:13:32
Zitat von: frank am 20 Januar 2016, 09:16:12
da hast du freie wahl. entweder in die definition, oder über ein eigenes at/notify/doif, oder was auch immer.

hmmm... ich habs mal mit der definition versucht nur leider bekomme ich im Log dann immer folgendes:
2016.01.20 09:26:44 3: Sprit.Jet_Goettingen.SuperE5: URL is none, no periodic updates will be limited to explicit GetXXPoll attribues (if defined)
2016.01.20 09:26:44 3: Sprit.Jet_Goettingen.SuperE5: Defined without URL and interval 900
und passieren tut leider nichts :(

Nachtrag: Hab grad die URL aus getData in die definition kopiert und nun geht es. Muss die URL dennoch in getData bleiben?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 20 Januar 2016, 11:03:13
Zitat von: Bootscreen am 20 Januar 2016, 10:13:32
Nachtrag: Hab grad die URL aus getData in die definition kopiert und nun geht es. Muss die URL dennoch in getData bleiben?
in meinem beispiel aus antwort 50 habe ich eine ähnliche url/php-anfrage. ich habe die url geteilt. den teil bis zum fragezeichen in die definition gesteckt und den teil nach dem fragezeichen ins attribut .*Data. in meinem fall requestData. ich brauchte eine post-anfrage, die nur mit data-anteil zu machen war.
httpmod setzt dann die beiden teile wieder zusammen und baut das fragezeichen ein.

ich denke das würde für deinem fall auch so funktionieren, habe aber die get-attribute noch nicht benutzt. wenn es auch anders geht, warum nicht. ich würde mit verbose4 oder 5 mal im fhem.log schauen, was httpmod beim abruf zeigt.

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 20 Januar 2016, 11:37:09
Ich habe etwas Probleme, die richtigen Infos aus einem JSON zu extrahieren...

Ich möchte die ersten vier Gruppen aus der "Departures" Gruppe als readings:

{
  "ms": 140,
  "status": "success",
  "data": {
    "BusGroups": [
      {
        "Type": "Buss",
        "Title": "Bergsunds strand",
        "Departures": [
          {
            "LineNumber": "54",
            "Destination": "Storängsbotten",
            "ExpectedDateTime": "2016-01-20T11:25:36",
            "DisplayTime": "1 min",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "66",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:28:04",
            "DisplayTime": "3 min",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "54",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:29:27",
            "DisplayTime": "5 min",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "66",
            "Destination": "Sofia",
            "ExpectedDateTime": "2016-01-20T11:33:00",
            "DisplayTime": "8 min",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Storängsbotten",
            "ExpectedDateTime": "2016-01-20T11:36:53",
            "DisplayTime": "12 min",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:41:01",
            "DisplayTime": "16 min",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "66",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:45:16",
            "DisplayTime": "21 min",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "54",
            "Destination": "Storängsbotten",
            "ExpectedDateTime": "2016-01-20T11:48:53",
            "DisplayTime": "24 min",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "66",
            "Destination": "Sofia",
            "ExpectedDateTime": "2016-01-20T11:49:28",
            "DisplayTime": "25 min",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:53:18",
            "DisplayTime": "29 min",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "66",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T11:56:27",
            "DisplayTime": "11:56",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "54",
            "Destination": "Storängsbotten",
            "ExpectedDateTime": "2016-01-20T12:00:53",
            "DisplayTime": "12:00",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T12:03:27",
            "DisplayTime": "12:03",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "66",
            "Destination": "Sofia",
            "ExpectedDateTime": "2016-01-20T12:05:53",
            "DisplayTime": "12:05",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Storängsbotten",
            "ExpectedDateTime": "2016-01-20T12:12:53",
            "DisplayTime": "12:12",
            "Deviations": [],
            "StopPointNumber": "10961"
          },
          {
            "LineNumber": "54",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T12:15:27",
            "DisplayTime": "12:15",
            "Deviations": [],
            "StopPointNumber": "10962"
          },
          {
            "LineNumber": "66",
            "Destination": "Reimersholme",
            "ExpectedDateTime": "2016-01-20T12:16:27",
            "DisplayTime": "12:16",
            "Deviations": [],
            "StopPointNumber": "10962"
          }
        ],
        "CurrentServerTime": "11:24",
        "StopPointDeviations": [],
        "GroupId": "Bergsunds strand#10961",
        "JourneyProduct": 8
      }
    ],
    "TrainGroups": [],
    "TranCityTypes": [],
    "TramTypes": [],
    "MetroRedGroups": [],
    "MetroGreenGroups": [],
    "MetroBlueGroups": [],
    "ShipGroups": [],
    "HasStopPointDeviations": false,
    "LastUpdate": "11:23",
    "Error": null,
    "HasResultData": true
  }
}


Geht das mit dem Modul?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Januar 2016, 12:01:00
Hallo Reiner,

Das sollte gehen.
Gib einfach mal das Attribut extractAllJSON an.
Dann werden alle Daten in Readings geholt.
Die Namen der Readings entsprechen dabei den Strings, die Du bei den readingXJSON oder getXJSON Attributen angeben kannst, um später nur noch die gewünschten Readings zu speichern.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Januar 2016, 12:04:00
Hallo Tim,

Probleme mit Umlauten etc. solltest Du mit den encode und decode Attributen lösen können.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 20 Januar 2016, 12:47:12
Hallo Stefan,

ich hatte es mit dem Attribut extractAllJSON versucht, das hat auch soweit funktioniert, ich hatte dann keine Möglichkeit gefunden, die Umlaute korrekt einzustellen.
Ich habe verschiedene Kombinationen von readingEncode und readingDecode versucht, die schienen aber keinen Einfluss auf die Umlaute zu haben.
Außerdem ist es mir nicht gelungen, veraltete readings zu löschen bzw. zu überschreiben, obwohl ich diese Parameter gesetzt habe:


attr BusInfo readingMaxAge 300
attr BusInfo readingMaxAgeReplacement offline
attr BusInfo readingMaxAgeReplacementMode text


Gibt es eine Möglichkeit, vielleicht in Zukunft einen readingMaxAgeReplacementMode delete zu implementieren?

Gruß,
Reiner

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 20 Januar 2016, 13:47:24
Zitat von: StefanStrobel am 20 Januar 2016, 12:04:00
Hallo Tim,

Probleme mit Umlauten etc. solltest Du mit den encode und decode Attributen lösen können.

Gruß
   Stefan

Hi Stefan,

im Request der Anfrage steht eigentlich, das es schon als UTF-8 ankommt "Content-Type: text/html;charset=UTF-8 "
FHEM und somit auch das HTTPMOD Modul arbeiten doch schon in UTF-8? Frage mich nun also, was ich da wie encoden oder decoden soll? Kannst du mir mal sagen, welches encode/decode Attribute fehlt?

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 20 Januar 2016, 14:32:16
Hi Stefan,

ich habe jetzt mal wie von Dir angeregt die mit extractAllJSON ermittelten Namen/Pfade von Hand eingetragen und extractAllJSON aus der Konfiguration gelöscht. Jetzt bekomme ich aber gar keine Updates mehr. Im Logfile steht:

2016.01.20 14:31:12 3: BusInfo: Read response to update didn't match any Reading

Das ist die aktuelle Konfiguration:

define BusInfo HTTPMOD http://sl.se/api/sv/RealTime/GetDepartures/1388 60
attr BusInfo userattr 1 enableCookies reading01JSON reading01Name reading02JSON reading03JSON reading04JSON reading05JSON reading06JSON reading07JSON reading08JSON reading09JSON reading10JSON reading11JSON reading12JSON readingDecode readingEncode readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode
attr BusInfo enableCookies 1
attr BusInfo reading01JSON data_BusGroups_01_Departures_01_Destination
attr BusInfo reading02JSON data_BusGroups_01_Departures_01_DisplayTime
attr BusInfo reading03JSON data_BusGroups_01_Departures_01_LineNumber
attr BusInfo reading04JSON data_BusGroups_01_Departures_02_Destination
attr BusInfo reading05JSON data_BusGroups_01_Departures_02_DisplayTime
attr BusInfo reading06JSON data_BusGroups_01_Departures_02_LineNumber
attr BusInfo reading07JSON data_BusGroups_01_Departures_03_Destination
attr BusInfo reading08JSON data_BusGroups_01_Departures_03_DisplayTime
attr BusInfo reading09JSON data_BusGroups_01_Departures_03_LineNumber
attr BusInfo reading10JSON data_BusGroups_01_Departures_04_Destination
attr BusInfo reading11JSON data_BusGroups_01_Departures_04_DisplayTime
attr BusInfo reading12JSON data_BusGroups_01_Departures_04_LineNumber
attr BusInfo readingMaxAge 300
attr BusInfo readingMaxAgeReplacement offline
attr BusInfo readingMaxAgeReplacementMode text
attr BusInfo room Devices
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 20 Januar 2016, 19:12:24
Zitat von: Reiner am 20 Januar 2016, 14:32:16
Hi Stefan,

ich habe jetzt mal wie von Dir angeregt die mit extractAllJSON ermittelten Namen/Pfade von Hand eingetragen und extractAllJSON aus der Konfiguration gelöscht. Jetzt bekomme ich aber gar keine Updates mehr. Im Logfile steht:

2016.01.20 14:31:12 3: BusInfo: Read response to update didn't match any Reading

Das ist die aktuelle Konfiguration:

define BusInfo HTTPMOD http://sl.se/api/sv/RealTime/GetDepartures/1388 60
attr BusInfo userattr 1 enableCookies reading01JSON reading01Name reading02JSON reading03JSON reading04JSON reading05JSON reading06JSON reading07JSON reading08JSON reading09JSON reading10JSON reading11JSON reading12JSON readingDecode readingEncode readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode
attr BusInfo enableCookies 1
attr BusInfo reading01JSON data_BusGroups_01_Departures_01_Destination
attr BusInfo reading02JSON data_BusGroups_01_Departures_01_DisplayTime
attr BusInfo reading03JSON data_BusGroups_01_Departures_01_LineNumber
attr BusInfo reading04JSON data_BusGroups_01_Departures_02_Destination
attr BusInfo reading05JSON data_BusGroups_01_Departures_02_DisplayTime
attr BusInfo reading06JSON data_BusGroups_01_Departures_02_LineNumber
attr BusInfo reading07JSON data_BusGroups_01_Departures_03_Destination
attr BusInfo reading08JSON data_BusGroups_01_Departures_03_DisplayTime
attr BusInfo reading09JSON data_BusGroups_01_Departures_03_LineNumber
attr BusInfo reading10JSON data_BusGroups_01_Departures_04_Destination
attr BusInfo reading11JSON data_BusGroups_01_Departures_04_DisplayTime
attr BusInfo reading12JSON data_BusGroups_01_Departures_04_LineNumber
attr BusInfo readingMaxAge 300
attr BusInfo readingMaxAgeReplacement offline
attr BusInfo readingMaxAgeReplacementMode text
attr BusInfo room Devices


Wenn ich mich nicht irre, fehlt doch bei jedem readingXXJSON das dazugehörige readingXXName. Du musst dem Modul doch noch sagen, in welches Reading er die per readingXXJSON aus dem Request herausextrahierten Daten packen soll.

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Januar 2016, 19:18:48
Hallo Reiner und Tim,

Für jedes Reading wird immer ein Name benötigt. Die Parse-Anweisung kann dann zwischen Regex, XPath oder JSON variieren. ohne readingXXName läuft ein readingXXJSON daher ins Leere.

Was Umlaute etc. angeht, so gibt es leider kein Patentrezept. Auch wenn der Server "behauptet" UTF-8 zu liefern, kommt es bei Haustechnik-Geräten o.ä. immer wieder vor, dass der Entwickler gar nicht wusste was er tut und die Texte dann doch in irgendeiner DOS-Codepage oder ähnlichen Kodierungen geliefert werden.
Da hilft nur genau  hinsehen, wie die Zeichen tatsächlich geliefert werden und dann passend hin- und her wandeln.

Ein ReplacementMode delete wäre eine unkomplizierte Erweiterung. Das bau ich demnächst mal ein.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Januar 2016, 19:47:39
Hallo Oliver und Frank,

mit den Zyklischen Abfragen bei HTTPMOD ist das folgendermassen:
Ursprünglich war die Grundidee von HTTPMOD dass man über eine einzige URL regelmäßig Daten abfragen kann, und das in der einen Antwort mehrere interessante Werte stehen können. Daher kommt die URL und das Intervall beim Define. HTTPMOD ruft die URL dann in einer GetUpdate-Funktion automatische regelmäßig auf und mit den reading... Attributen wird diese eine Antwort geparsed und die Werte werden in meist mehreren Readings gespeichert.

In einer späteren Erweiterung habe ich die get... Attribute eingebaut, damit man mit einem Get-Kommando explizit / bei Bedarf Daten abrufen kann. Dabei kann man für jedes Get eine abweichende URL und optional alternative Parse-Optionen angeben (muss man aber nicht, dann greifen auch hier die reading... Attribute).

Damit Werte mit eigener URL dann auch automatisch zyklisch abgefragt werden können, kann man mit dem getXXPoll Attribut das Get quasi an die GetUpdate-Funktion anhängen und mit dem PollDelay eine seltenere Abfrage umsetzen.
Die Gets mit automatischer Abfrage braucht man eigntlich nur dann, wenn mehrere Werte wirklich über unterschiedliche URLs abgefragt werden müssen.

Unterm Strich bedeutet das dass man für zyklische Abfragen meistens besser mit reading... Attributen und einer URL + Intervall-Angabe beim Define fährt. Insbesondere wenn man mehrere Werte aus einer Antwort auslesen möchte.
Wenn man das mit einzelnen Gets realisiert, geht das zwar auch, aber dann wird für jedes Get ein separater HTTP-Request erzeugt. Wenn dabei die URL eigentlich die gleiche ist, ist das überflüssig und das abgefragte Gerät wird mehrfach hintereinander nach den gleichen Daten gefragt.

Die requestData bzw. getXXData Attribute sorgen dafür dass kein HTTP-GET sondern ein HTTP-POST gesendet wird. Dabei landen die Daten nicht wie bei einem Get als Query-String (nach ?) in der URL sondern als mehrzeiliger Daten-Anteil nach den HTTP-Headern. Hier kommt es darauf an, was das Gerät haben will. Manche verstehen die Abfragen sowohl als HTTP-GET mit Daten als Query-String nach einem ? in der URL, als auch per HTTP-POST, andere erwarten einen HTTP-POST.

Die getXXURL ist wie oben schon geschrieben dafür da dass man bei jedem Get eine eigene URL angeben kann. Wenn die URL nicht angegeben wird, verwendet HTTPMOD automatisch die URL aus dem Define.

Ich hoffe die Erläuterung hilft Euch weiter :-)

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 20 Januar 2016, 21:27:02
Hallo Stefan,

vielen Dank für die Klarstellung mit dem readingXXName. Ich war davon ausgegangen, dass dies ein optionales Setting ist und der "Pfad" aus dem readingXXJSON genommen wird, wenn es nicht angegeben ist.

Nach der Umstellung auf einzelne Readings und hinzufügen von readingXXEncode utf-8 funktionieren bei mir nun auch die Umlaute. Nur zu meinem Verständnis: Wie hätte man das bei extractAllJSON für alle readings definieren müssen?

Bin mal gespannt, ob das readingMaxAgeReplacement heute nacht funktioniert wenn der letzte Bus durch ist :)

Vielen Dank für die tolle Arbeit!

Gruß,
Reiner
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 20 Januar 2016, 21:35:26
Noch eine kleine Frage... :)

Bei HTTPMOD Devices steht im Internals Feld STATE bei mir immer "???". Wäre es möglich, da einen Wert - z.B. die Text-Form des letzten HTTP Status Codes - einzutragen? Der Status-Code wird ja im Internal "code" abgelegt.

Gruß,
Reiner
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 21 Januar 2016, 12:17:55
ZitatIch hoffe die Erläuterung hilft Euch weiter :-)
sicherlich, danke.   :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 21 Januar 2016, 13:45:37
Zitat von: Reiner am 20 Januar 2016, 21:35:26
Noch eine kleine Frage... :)

Bei HTTPMOD Devices steht im Internals Feld STATE bei mir immer "???". Wäre es möglich, da einen Wert - z.B. die Text-Form des letzten HTTP Status Codes - einzutragen? Der Status-Code wird ja im Internal "code" abgelegt.

Gruß,
Reiner
teste mal stateFormat: {sprintf("%s",InternalVal("<device>","code",""))}

weiß jemand wie ich die meldung wegbekomme? "Read response to update didn't match any Reading"

Internals:
   BUSY       0
   CHANGED
   DEF        https://creativecommons.tankerkoenig.de/json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey= 60
   Interval   60
   JSONEnabled 1
   LASTSEND   1453380210.95255
   MainURL    https://creativecommons.tankerkoenig.de/json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey=
   NAME       Sprit.Star_BadSachsa.SuperE5
   NR         38
   STATE      1.219
   TRIGGERTIME 1453380270.94978
   TRIGGERTIME_FMT 2016-01-21 13:44:30
   TYPE       HTTPMOD
   addr       https://creativecommons.tankerkoenig.de:443
   buf        HTTP/1.1 200 OKcode       200
   conn
   data
   displayurl https://creativecommons.tankerkoenig.de/json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey=
   header
   host       creativecommons.tankerkoenig.de
   httpheader HTTP/1.1 200 OK
   hu_blocking 0
   hu_filecount 255
   ignoreredirects 0
   loglevel   4
   path       /json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey=
   protocol   https
   redirects  0
   timeout    2
   url        https://creativecommons.tankerkoenig.de/json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey=
   value      0
   QUEUE:
   Readings:
     2016-01-21 13:31:31   Status          true
     2016-01-21 13:31:31   SuperE5         1.219
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://creativecommons.tankerkoenig.de/json/detail.php?id=005056ba-7cb6-1ed2-bceb-7c4d1b36ed27&apikey=
     value      0
   Defptr:
     Readingbase:
       Status     get
       SuperE5    get
     Readingnum:
       Status     02
       SuperE5    01
     Readingoutdated:
     Readingsubnum:
       Status
       SuperE5
   Lastpoll:
     Status     1453379490.88667
     SuperE5    1453379490.88667
   Sslargs:
Attributes:
   alias      Star - Bad Sachsa - Super - (06:00-21:00 | WE 8:30-20:00)
   get01JSON  station_e5
   get01Name  SuperE5
   get01Poll  1
   get01PollDelay 900
   get02JSON  station_isOpen
   get02Name  Status
   get02Poll  1
   get02PollDelay 900
   group      Spritpreise
   room       Spritpreise
   stateFormat SuperE5
   userattr   extractAllJSON get01JSON get01Name get01Poll get01PollDelay get02JSON get02Name get02Poll get02PollDelay getData getHeader1 getHeader2 getURL stateFormat
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 21 Januar 2016, 13:57:34
Zitat von: Bootscreen am 21 Januar 2016, 13:45:37
teste mal stateFormat: {sprintf("%s",InternalVal("<device>","code",""))}

Danke! Das sieht schon viel besser aus :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 Januar 2016, 17:19:37
Hallo Oliver,

hast Du schon von get... auf reading... umgestellt?
Die Meldung, die Dich stört, kommt dann wenn die Antwort auf einen Request nicht geparsed werden konnte bzw. keine Readings belegt werden konnten. Probiers doch mal ungefähr so:


define Sprit.Jet_Goettingen.SuperE5 HTTPMOD https://creativecommons.tankerkoenig.de/json/detail.php?id=51d4b46c-a095-1aa0-e100-80009459e03a&apikey= 900
attr Sprit.Jet_Goettingen.SuperE5 reading01JSON station_e5
attr Sprit.Jet_Goettingen.SuperE5 reading01Name SuperE5
attr Sprit.Jet_Goettingen.SuperE5 reading02JSON station_isOpen
attr Sprit.Jet_Goettingen.SuperE5 reading02Name Status
attr Sprit.Jet_Goettingen.SuperE5 requestHeader1 Content-Type: application/json
attr Sprit.Jet_Goettingen.SuperE5 requestHeader2 Accept: */*
attr Sprit.Jet_Goettingen.SuperE5 enableControlSet 1
attr Sprit.Jet_Goettingen.SuperE5 showMatched 1


Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 Januar 2016, 21:17:15
Hallo Frank,

ich habe das mit der Regex-Option /g mal ausprobiert.
Anbei ein Zwischenstand, in dem es ein noch undokumentiertes Attribut (reading|get|set)[0-9]+RegOpt gibt.
Wenn Du das auf g setzt, dann erzeugt HTTPMOD für jeden Match ein eigenes Reading wobei der Name wie bei mehreren capture groups mit -Zahl ergänzt wird.

Schau doch mal ob das so für Dich funktionieren würde.

Gruss
   Stefan

EDIT 23.1.16: Die aktuellste Version ist wieder am ersten Post dieses Threads angehängt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 21 Januar 2016, 22:01:54
hallo stefan,

ZitatSchau doch mal ob das so für Dich funktionieren würde.
mit dem beispiel aus meinem post wurden alle erwarteten readings erzeugt. supi, danke.

kleiner schönheitsfehler:
im reading MATCHED_READINGS wird nur ein reading angezeigt. nämlich der teil des namens, der bei allen readings gemeinsam ist, also ohne zahl.

edit:
ausserdem wäre es schön, wenn die automatischen zahlen im readingnamen eine null vorangestellt hätten (oder auch mehrere), um eine bessere sortierung der readings zu bekommen.

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: grooves am 22 Januar 2016, 08:48:31
Zitat von: StefanStrobel am 19 Januar 2016, 23:40:12
Hallo Grooves,

Ich vermute das Problem liegt daran, dass Du noch die alte Syntax der Reading-Attribute verwendest.
(readingsNameXY statt reading01Name etc wie in der Doku und im Wiki beschrieben)
Poste doch mal einen Auszug aus dem Log mit Verbose 5.
Da sollte man sehen, was die MaxAge Funkktion macht.

Gruß
    Stefan

Hallo Stefan,

genau daran hat es gelegen, habe jetzt auf neues Format umgestellt
und es wird Replaced,

Besten Dank,
Micha
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 22 Januar 2016, 16:44:17
Zitat von: StefanStrobel am 21 Januar 2016, 17:19:37
Hallo Oliver,

hast Du schon von get... auf reading... umgestellt?
Die Meldung, die Dich stört, kommt dann wenn die Antwort auf einen Request nicht geparsed werden konnte bzw. keine Readings belegt werden konnten. Probiers doch mal ungefähr so:

Gruss
    Stefan

Habs umgestellt, dank dir =)

Nun hab ich seid gestern aber das Problem das ich mir das LogFile nicht mehr anschauen kann, ich hba nichts geändert aber jedesmal wenn ich versuche es aufzurufen bekomm ich den fehler Zeitüberschreitung.

Nachtrag:
Da es mich grad extrem gestört hat das ich nur einen Alias pro Device einrichten kann (Thermostatete beispielsweise sollen bei mir je anch Raum anders heißen, im Raum Wohnzimmer reicht es Thermostat, im Raum Heizung wo alle Thermostate liegen reicht das aber nicht, da soll es Wohnzimmer heißen), hab ich mich ein wenig umgeschaut und hab es für mich angepasst. Vllt willst du es, Stefan, ja offiziell übernehmen?
Änderungen:
Zeile 1516:
Alt: my $devName = AttrVal($d, "alias", $d);
Neu: my $devName = AttrVal($d, "alias_" . $FW_room, AttrVal($d, "alias", $d));

Damit kann man mit dem Attribut alias_<raumname> einen Alias pro Raum erstellen. Sollte dieser nicht gefunden werden, nimmt er den normalen Alias bzw. den Gerätenamen.

Bisher habe ich keine Fehler oder Nachteile durch die Änderungen gefunden, da ich aber kein "Profi" bin gebe ich kein Gewehr.

Vielleicht hilft es ja auch dem ein anderem
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Januar 2016, 10:59:26
Hallo,

@Frank: ich habe in der neuen Version ein Attribut (reading|get|set)[0-9]*AutoNumLen zur Darstellung der Zahlen nach dem ReadingNamen mit führenden Nullen eingebaut. MATCHED_READINGS sollte jetzt auch die automatisch erzeugen Reading-Namen mit Zahlen enthalten und (reading|get|set)[0-9]+RegOpt erlaubt die Regex Option g um eine Regex mehrfach anzuwenden.

@Botscreen: Deine Änderung ist ausserhalb von HTTPMOD oder? da bin ich nicht zuständig ;-)

Hat eigentlich schon jemand enableCookies testen können? funktioniert das bei Euch?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 23 Januar 2016, 14:03:54
Zitat@Frank: ich habe in der neuen Version ein Attribut (reading|get|set)[0-9]*AutoNumLen zur Darstellung der Zahlen nach dem ReadingNamen mit führenden Nullen eingebaut. MATCHED_READINGS sollte jetzt auch die automatisch erzeugen Reading-Namen mit Zahlen enthalten und (reading|get|set)[0-9]+RegOpt erlaubt die Regex Option g um eine Regex mehrfach anzuwenden.

perfekt, merci.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 23 Januar 2016, 14:53:20
hallo stefan,
es gibt doch noch eine kleinigkeit:

2016.01.23 14:12:48.462 1: PERL WARNING: Use of uninitialized value $error in string eq at ./FHEM/98_HTTPMOD.pm line 794.

mit den ersten versionen aus diesem thread gab es diesen fehler noch nicht. bei mir erst seit 2 tagen mit einführung der /g-option. ich habe aber auch nicht alle versionen probiert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Januar 2016, 20:41:47
Hallo Frank,

sollte jetzt behoben sein.
Ich habe auch noch eine neue Funktion eingebaut, die alte IDRegex Attribute in IdRegex umbenennt. Bei IdXPath und IDJSON ist das d auch klein ...

So langsam sollte ich wohl die neue Version auch mal einchecken.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 24 Januar 2016, 00:11:15
hallo stefan,

ZitatSo langsam sollte ich wohl die neue Version auch mal einchecken.
von mir aus sehr gerne.
die warnung ist auch weg.

edit:
vielleicht vor dem einchecken noch dieses problem beheben:
ab dem 4. reading kann ich das attr readingXXRegOpt=g nicht mehr setzen. es gibt die fehlermeldung:

eq3: unknown attribute reading04RegOpt. Type 'attr eq3 ?' for a detailed list.

Internals:
   .getList
   .setList
   .updateHintList 0
   BUSY       0
   DEF        http://www.eq-3.de/db_action/download_suche.php 86400
   Interval   86400
   LASTSEND   1453594502.80129
   MainURL    http://www.eq-3.de/db_action/download_suche.php
   NAME       eq3
   NR         558
   STATE      ???
   TRIGGERTIME 1453675899.45815
   TRIGGERTIME_FMT 2016-01-24 23:51:39
   TYPE       HTTPMOD
   addr       http://www.eq-3.de:80
   buf        HTTP/1.1 200 OK ....#gekürzt
   code       200
   conn
   data       suche_in=62&suchtext=&themenbereich_1=99
   displayurl http://www.eq-3.de/db_action/download_suche.php
   header
   host       www.eq-3.de
   httpheader HTTP/1.1 200 OK

Date: Sun, 24 Jan 2016 00:15:02 GMT

Content-Type: text/html

Connection: close

Server: Apache

Cache-Control: max-age=86400

Expires: Mon, 25 Jan 2016 00:15:02 GMT
   hu_blocking 0
   hu_filecount 5
   ignoreredirects 0
   loglevel   4
   path       /db_action/download_suche.php
   protocol   http
   redirects  0
   timeout    2
   url        http://www.eq-3.de/db_action/download_suche.php
   value      0
   QUEUE:
   Readings:
     2016-01-24 01:15:03   MATCHED_READINGS model-01 model-02 model-03 model-04 model-05 model-06 model-07 model-08 model-09 model-10 model-11 model-12 model-13 model-14 release-01 release-02 release-03 release-04 release-05 release-06 release-07 release-08 release-09 release-10 release-11 release-12 release-13 release-14 link-01 link-02 link-03 link-04 link-05 link-06 link-07 link-08 link-09 link-10 link-11 link-12 link-13 link-14 version
     2016-01-24 01:15:03   link-01         /Downloads/Software/Firmware/HM-LC-Dim1T-Pl-3_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-02         /Downloads/Software/Firmware/HM-LC-Dim1L-Pl-3_update_V2_9_0007_160113.tgz
     2016-01-24 01:15:03   link-03         /Downloads/Software/Firmware/HM-LC-Dim1PWM-CV_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-04         /Downloads/Software/Firmware/HM-LC-Dim1TPBU-FM_update_V2_9_0005_160113.tgz
     2016-01-24 01:15:03   link-05         /Downloads/Software/Firmware/hm-mod-re-8_update_V1_2_150911.tgz
     2016-01-24 01:15:03   link-06         /Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_3_002_150827.tgz
     2016-01-24 01:15:03   link-07         /Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_8_2_150713.tgz
     2016-01-24 01:15:03   link-08         /Downloads/Software/Firmware/HM-LC-Sw1PBU-FM_update_V2_8_2_150713.tgz
     2016-01-24 01:15:03   link-09         /Downloads/Software/Firmware/HM-Sen-MDIR-WM55_update_V1_1_2_150413.tgz
     2016-01-24 01:15:03   link-10         /Downloads/Software/Firmware/HM-ES-PMSw1-Pl_update_V2_5_0009_150217.tgz
     2016-01-24 01:15:03   link-11         /Downloads/Software/Firmware/hm_cc_rt_dn_update_V1_4_001_141020.tgz
     2016-01-24 01:15:03   link-12         /Downloads/Software/Firmware/hm_tc_it_wm_w_eu_update_V1_2_001_141020.tgz
     2016-01-24 01:15:03   link-13         /Downloads/Software/Firmware/hm-sen-rd-o_update_V1_4_003_130930.tgz
     2016-01-24 01:15:03   link-14         /Downloads/Software/Firmware/HM-LC-Bl1PBU-FM_update_V2_3_0002_131204.tgz
     2016-01-24 01:15:03   model-01        HM-LC-Dim1T-Pl-3
     2016-01-24 01:15:03   model-02        HM-LC-Dim1L-Pl-3
     2016-01-24 01:15:03   model-03        HM-LC-Dim1PWM-CV
     2016-01-24 01:15:03   model-04        HM-LC-Dim1TPBU-FM
     2016-01-24 01:15:03   model-05        HM-MOD-Re-8
     2016-01-24 01:15:03   model-06        HM-TC-IT-WM-W-EU
     2016-01-24 01:15:03   model-07        HM-LC-Bl1PBU-FM
     2016-01-24 01:15:03   model-08        HM-LC-Sw1PBU-FM
     2016-01-24 01:15:03   model-09        HM-Sen-MDIR-WM-55
     2016-01-24 01:15:03   model-10        HM-ES-PMSw1-Pl
     2016-01-24 01:15:03   model-11        HM-CC-RT-DN
     2016-01-24 01:15:03   model-12        HM-TC-IT-WM-W-EU
     2016-01-24 01:15:03   model-13        HM-Sen-RD-O
     2016-01-24 01:15:03   model-14        HM-LC-BI1PBU-FM
     2016-01-24 01:15:03   release-01      13.01.2016
     2016-01-24 01:15:03   release-02      13.01.2016
     2016-01-24 01:15:03   release-03      13.01.2016
     2016-01-24 01:15:03   release-04      13.01.2016
     2016-01-24 01:15:03   release-05      11.09.2015
     2016-01-24 01:15:03   release-06      27.08.2015
     2016-01-24 01:15:03   release-07      12.08.2015
     2016-01-24 01:15:03   release-08      12.08.2015
     2016-01-24 01:15:03   release-09      14.04.2015
     2016-01-24 01:15:03   release-10      16.03.2015
     2016-01-24 01:15:03   release-11      20.10.2014
     2016-01-24 01:15:03   release-12      20.10.2014
     2016-01-24 01:15:03   release-13      18.09.2014
     2016-01-24 01:15:03   release-14      15.07.2014
     2016-01-24 01:15:03   version         2.9.5
   Request:
     data       suche_in=62&suchtext=&themenbereich_1=99
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://www.eq-3.de/db_action/download_suche.php
     value      0
   Defptr:
     Readingbase:
       link       reading
       link-01    reading
       link-02    reading
       link-03    reading
       link-04    reading
       link-05    reading
       link-06    reading
       link-07    reading
       link-08    reading
       link-09    reading
       link-10    reading
       link-11    reading
       link-12    reading
       link-13    reading
       link-14    reading
       model      reading
       model-01   reading
       model-02   reading
       model-03   reading
       model-04   reading
       model-05   reading
       model-06   reading
       model-07   reading
       model-08   reading
       model-09   reading
       model-10   reading
       model-11   reading
       model-12   reading
       model-13   reading
       model-14   reading
       model-15   reading
       model-16   reading
       release    reading
       release-01 reading
       release-02 reading
       release-03 reading
       release-04 reading
       release-05 reading
       release-06 reading
       release-07 reading
       release-08 reading
       release-09 reading
       release-10 reading
       release-11 reading
       release-12 reading
       release-13 reading
       release-14 reading
       release-15 reading
       release-16 reading
       version    reading
     Readingnum:
       link       03
       link-01    03
       link-02    03
       link-03    03
       link-04    03
       link-05    03
       link-06    03
       link-07    03
       link-08    03
       link-09    03
       link-10    03
       link-11    03
       link-12    03
       link-13    03
       link-14    03
       model      01
       model-01   01
       model-02   01
       model-03   01
       model-04   01
       model-05   01
       model-06   01
       model-07   01
       model-08   01
       model-09   01
       model-10   01
       model-11   01
       model-12   01
       model-13   01
       model-14   01
       model-15   01
       model-16   01
       release    02
       release-01 02
       release-02 02
       release-03 02
       release-04 02
       release-05 02
       release-06 02
       release-07 02
       release-08 02
       release-09 02
       release-10 02
       release-11 02
       release-12 02
       release-13 02
       release-14 02
       release-15 02
       release-16 02
       version    04
     Readingoutdated:
     Readingsubnum:
       link-01    -1
       link-02    -2
       link-03    -3
       link-04    -4
       link-05    -5
       link-06    -6
       link-07    -7
       link-08    -8
       link-09    -9
       link-10    -10
       link-11    -11
       link-12    -12
       link-13    -13
       link-14    -14
       model-01   -1
       model-02   -2
       model-03   -3
       model-04   -4
       model-05   -5
       model-06   -6
       model-07   -7
       model-08   -8
       model-09   -9
       model-10   -10
       model-11   -11
       model-12   -12
       model-13   -13
       model-14   -14
       model-15   -15
       model-16   -16
       release-01 -1
       release-02 -2
       release-03 -3
       release-04 -4
       release-05 -5
       release-06 -6
       release-07 -7
       release-08 -8
       release-09 -9
       release-10 -10
       release-11 -11
       release-12 -12
       release-13 -13
       release-14 -14
       release-15 -15
       release-16 -16
       version
   Sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   reading01AutoNumLen 2
   reading01Name model
   reading01RegOpt g
   reading01Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?Kurz.Bez.:.([a-zA-Z0-9\-]+)
   reading02AutoNumLen 2
   reading02Name release
   reading02RegOpt g
   reading02Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?datum..(\d\d\.\d\d\.\d\d\d\d)
   reading03AutoNumLen 2
   reading03Name link
   reading03RegOpt g
   reading03Regex href=\"(.*?\.tgz)
   reading04AutoNumLen 2
   reading04Name version
   reading04Regex (?s)<p.class=\"name\">(?=.*?datum.*?href=\"[^\.]+\.(?:tgz|(*SKIP)(*FAIL))\").*?Firmware.V([\d\.]+)
   requestData.* suche_in=62&suchtext=&themenbereich_1=99
   room       eq3
   showError  1
   showMatched 1
   userattr   enableControlSet event-on-change-reading reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex reading03AutoNumLen reading03Name reading03RegOpt reading03Regex reading04AutoNumLen reading04Name reading04Regex requestData.* showError showMatched


edit2: nach
1. fhem update => keine änderung,
2. device gelöscht, neu angelegt => verschlechterung, gar keine RegOpt mehr möglich
3. zeile 145 geändert => alle funktioniert bestens.

      "(reading|get|set)[0-9]+RegOpt " .

mein fhem/perl v5.12.2 mag wohl den zusatz ":g,s" nicht, warum auch immer.  :)


gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 24 Januar 2016, 17:16:01
Args, sorry Stefan. Vergiss was ich geschrieben hab. Hatte das mit FHEMWEB durcheinander gebracht ^^
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Januar 2016, 20:39:21
Hallo Frank,

danke für den Hinweis. fhem.pl hat da ein Problem wenn man bei Regex-Attributen auch noch Infos für Fhemweb mit : anfügt.
Ich habe eine entsprechende Änderung vorgeschlagen.
Bei der Gelegenheit habe ich noch ein paar Kleinigkeiten an HTTPMOD optimiert. Das Anfügen der Attribute an userattr sollte jetzt etwas sinnvoller funktionieren.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 28 Januar 2016, 19:24:38
Zitat von: StefanStrobel am 25 Januar 2016, 20:39:21
Hallo Frank,

danke für den Hinweis. fhem.pl hat da ein Problem wenn man bei Regex-Attributen auch noch Infos für Fhemweb mit : anfügt.
Ich habe eine entsprechende Änderung vorgeschlagen.

die eingecheckte änderung scheint zu funktionieren, denn das attr MaxAgeReplacementMode hatte die selben probleme, wie attr RegOpt. nun funktioniert es.

http://forum.fhem.de/index.php/topic,48150.msg398414.html#msg398414 (http://forum.fhem.de/index.php/topic,48150.msg398414.html#msg398414)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 29 Januar 2016, 23:33:39
Hi Stefan,

habe mal wieder ein bisschen rumgespielt:
1. MaxAgeReplacementMode: Wäre super wenn man dort auch "reading" nehmen könnte, sodass ich den Wert auf ein anderes Reading setzen könnte. Anwendungsfall wäre die Anzeige von Straßenbahn-Abfahrtszeiten. Meist wird die "Live-Anzeige" mitgeliefert, jedoch ab und an eben nicht. Dann wäre es super, wenn ich das Reading auf die "Fahrplan-Zeit" setzen könnte
2. Bei reading[0-9]Map habe ich mit leerzeichen kein Glück - gibt es da einen Trick? Habe nun doppelte und einfache Anführungszeichen sowie ohne Anführungszeichen probiert - irgendwie mag es nicht ;) Vielleicht liegts auch an dem Komma. Ich habe solche Readings, die ich durch die zahlen 1,2,3 ersetzen möchte:
'AAA, BBB':1,'CCC, DDD':2,'EEE, FFF':3

Ansonsten bin ich sehr glücklich mit der neuen Version - echt super!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 31 Januar 2016, 12:39:37
Ich versuche gerade per POST Daten eines Web-Services auszulesen. Allerdings scheine ich das Format des requestData Attributes nicht richtig hin zu bekommen. Ich möchte per POST den Parameter "guid" mit dem Wert "750d018a-e091-49ff-a860-5c1ef1e523e8" übergeben. Bisher habe ich

attr httpmodReq1 requestData {"guid" :"750d018a-e091-49ff-a860-5c1ef1e523e8"}

Das scheint aber nicht das richtige Format zu sein. Wie müsste ich so ein einfaches Key-Value Paar den angeben?

Gruß,
Reiner
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 31 Januar 2016, 21:13:00
Hallo,

@Uli:
die Kommas sind das Problem.
Ich schau mal ob ich das Parsen der Map-Attribute noch etwas verbessern kann.

@Reiner:
Das Format gibt Dein Server vor. Wie sieht der Request denn aus, wenn Du ihn regulär von einem Browser aus absetzt und mit einem Proxy mitschneidest?

Gruss
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 31 Januar 2016, 22:08:07
Hallo Stefan,

im Inspector in Firefox sehe ich als Form Parameter:

guid:"750d018a-e091-49ff-a860-5c1ef1e523e8"

Müssen dann da noch die geschweiften Klammern drum?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 01 Februar 2016, 08:15:41
Zitat von: Reiner am 31 Januar 2016, 22:08:07
Hallo Stefan,

im Inspector in Firefox sehe ich als Form Parameter:

guid:"750d018a-e091-49ff-a860-5c1ef1e523e8"

Müssen dann da noch die geschweiften Klammern drum?

Müsste doch
attr httpmodReq1 requestData guid=750d018a-e091-49ff-a860-5c1ef1e523e8
heissen?
Ansonsten wird vielleicht noch mehr verlangt beim POST. Könntest dir das Firefox Addon HttpFox installieren und dann den Request damit "aufzeichnen". Da siehst du dann, wie genau die Anfrage an den Server aussehen muss.

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 01 Februar 2016, 10:54:19
Ich hab eine erfolgreiche Anfrage aus IE mal mitgeschnitten:

POST http://install.egain.se/Home/CheckInstalled HTTP/1.1
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://install.egain.se/?gid=750d018a-e091-49ff-a860-5c1ef1e523e8
Accept-Language: en-US,de-DE;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Connection: Keep-Alive
Content-Length: 41
Host: install.egain.se
Pragma: no-cache

guid=750d018a-e091-49ff-a860-5c1ef1e523e8


Aus HTTPMOD heraus klappt es aber mit attr httpmodReq1 requestData guid=750d018a-e091-49ff-a860-5c1ef1e523e8 trotzdem nicht. Ich werde mal mit requestHeader weitere Header hinzufügen. Vielleicht klappt es ja dann.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 01 Februar 2016, 13:33:23
Gibt es eine Möglichkeit, die Internals Variable HTTPCookies zu löschen bzw. zurückzusetzen? Ein attr <dev> enableCookies 0 scheint dies nämlich nicht zu tun.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 01 Februar 2016, 21:08:15
Hallo Reiner,

die Header und Post Daten sollten genau so gesendet werden, wie der Server das erwartet und von einem Browser auch gesendet bekommt.
Ich verwende meisten die Burp Suite um die korrekte Übertragung zwischen Browser und Server mitzulesen.
Wenn die Post-Daten mit Anführungszeichen gesendet werden, dann solltest Du es auch im Attribut genau so ablegen:

attr httpmodReq1 requestData guid:"750d018a-e091-49ff-a860-5c1ef1e523e8"


wenn noch weitere Header erwartet werden, kann es aber natürlich auch an denen liegen.

Das manuelle Löschen von Cookies war bisher nicht vorgesehen. Der Server überschreibt die bei Bedarf normalerweise. Ich lade aber gleich noch mal eine Neue Version hoch, in der ein Löschen von enableCookies oder ein attr enableCookies 0 auch den Cookiespeicher löscht. Kann vermutlich nichts schaden.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 01 Februar 2016, 22:38:38
Hallo Stefan,

hab es gerade mal mit der neue Version probiert. Die Cookies werden wie gewünscht gelöscht, aber im fhem.log erhalte ich den folgenden Fehler:

2016.02.01 22:36:23 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1137.
2016.02.01 22:36:25 3: eGain: Read callback: request type was update retry 0, no headers, body empty,
Error: read from to http://install.egain.se:80 timed out


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hanjo am 02 Februar 2016, 14:38:17
Hallo Stefan,

schnelles Feedback: ich benutze das neue Modul um das JSON von https://creativecommons.tankerkoenig.de/ zu parsen und die Preise der Tankstellen bei mir in der Nähe anzuzeigen. Alles funktioniert einwandfrei!

Muss ich beim nächsten "update" was beachten?

Danke & viele Grüße
Hanjo
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Februar 2016, 20:48:24
Hallo Reiner,

danke für den Hinweis. Die Warnung kommt vermutlich bei ungültigen JSON Daten. Ich hab eine weitere Prüfung eingebaut.
Zudem habe ich den Authentisierungs-Mechanismus etwas umgebaut. Bisher wurden die Authentisierungs-Schritte hinten an die send-Queue angehängt, wenn die ReAuthRegex auf eine Response gepasst hat. Weitere Lese-Requests sind damit noch vor der Authentisierung in der Queue geblieben.
Jetzt werden die Authentisierungsschritte (sidX..) vorgezogen wenn sie benötigt werden.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Februar 2016, 20:50:28
Hallo Hanjo,

wenn Du die aktuelle Version aus diesem Thread genommen hast, wird die beim nächsten Update wieder mit der älteren Version aus dem SVN überschrieben. Es sei denn Du verhinderst das über die Schreibrechte.
Ich werde aber die neue Version demnächst einchecken und dann ist das Problem behoben.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: reibuehl am 02 Februar 2016, 21:16:51
Hallo Stefan,

die PERL Warning ist mit der neuen Version weg, ich bekomme aber immer noch diese Meldung:

2016.02.02 21:10:26 3: eGain: Read callback: request type was update retry 0, no headers, body empty,
Error: read from to http://install.egain.se:80 timed out


Meine Definition hat sich gegenüber vorgestern nicht geändert. Damals habe ich noch ein 500 Error vom Server zurück bekommen und die Internals buf und header waren gefüllt. Nun bekomme ich gar nichts mehr. Beide Internals sind leer.

Gruß,
Reiner
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Februar 2016, 17:40:46
Hallo Reiner,

an den Timeouts habe ich eigentlich nichts geändert. Kann es sein, dass Dein Gerät einfach nicht rechtzeitig geantwortet hat? Ein 500 Error ist ja eine Meldung, die vom Server als Antwort kommt. Der Timeout greift wenn der Server gar nichts antwortet.

Ich habe übrigens gerade noch mal eine Kleinigkeit verbessert und im ersten Post aktualisiert:
Wenn readingXXName vergessen wurde, wird ein readingXXRegex, JSON oder XPath nicht einfach ignoriert sondern bei JSON der Wert des JSON Attributs als Name verwendet und sonst unnamed-XX.
Ich hoffe das führt zu weniger Missverständnissen / Supportfragen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 04 Februar 2016, 22:28:32
Hi Stefan,

seit dem letzten Update aus dem ersten Beitrag:
2016.02.04 22:19:55 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 892.
2016.02.04 22:19:57 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1015.


Hatte an meiner Definition nichts geändert, nur die neueste Version aus dem Beitrag.

Viele Grüße,
Uli
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Augschburger am 05 Februar 2016, 19:59:27
Hallo Stefan,

ich habe folgendes Phänomen/Problem:
Ich lese diese Seite ein:
http://www.bergfex.de/deutschland/schneewerte

und versuche, die Tabelle mit HTTPMOD einzulesen, nur die für mich (meinen Sohn) interessanten Orte, z.B.:
Nesselwang<\/a><\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td class="center nowrap"\s*style="color: #999999;">\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td class="right nowrap" width="100" >(\s*.*?\s*)<\/td>

So funktioniert das auch, ich erhalte die Readings 1 bis 6. Der Teil, auf den gematched werden soll, sieht so aus:
<tr class="tr1"> <td style="width:100%; font-weight: bold;"><a href="/alpspitz-edelsberg-ostallgaeu/schneebericht/">Alpspitz / Edelsberg - Nesselwang</a></td> <td class="right nowrap" width="40">20 cm</td> <td class="right nowrap" width="40">20 cm</td> <td class="right nowrap" width="40">-</td> <td class="center nowrap" style="color: #999999;"> 2/6</td> <td style="padding-top: 2px; padding-bottom: 0; padding: 0; padding-top: 2px;"><img src="/images/icons/lifte-pisten/status1.png" border=0 width=17 height=17></td> <td class="right nowrap" width="100" > Heute, 07:00 </td> </tr>

Eigentlich müsste ich durch ständiges Wiederholen von \s*<td.*?>\s*(.*?)<\/td> auch alle Werte auslesen können, aber das scheitert, irgendwie. In regexr.com funktioniert's. Ich hab mich mehrfach vom Ende her durchgearbeitet und so die Stellen ermittelt, wo es schief geht und dann entsprechend den kompletten Text übernommen, aber ich finde den Haken einfach nicht...
Hast Du mir einen Tipp?

Danke,
  Hans-Jörg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Februar 2016, 20:06:13
Hallo Uli,

danke für den Hinweis, habs gefixt.

@Hans-Jörg: poste doch mal Deine tatsächliche Konfiguration und den ganzen Content, den Du parsen möchtest.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Februar 2016, 21:10:14
Hallo Hans-Jörg,

Ich hab mir Deine Frage gerade nochmal etwas genauer angesehen. Wenn ich Dich richtig verstehe, dann möchtest Du die komplexe regex einfacher schreiben, zumal sie # und ; enthält, was fhem nicht so einfach schluckt.

Probiers doch mal mit folgender Minimalkonfiguration:

define stest HTTPMOD http://www.bergfex.de/deutschland/schneewerte 300
attr stest reading01Name Nesselwang
attr stest reading01Regex Nesselwang<\/a><\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td [^>]+>\s*(.*?)<\/td>\s*<td.*?>\s*(.*?)<\/td>\s*<td [^>]+>(\s*.*?\s*)<\/td>


Funktioniert bei mir. Statt 300 Sekunden wäre natürlich ein längeres Intervall sinnvoller. So schnell schneit es ja nicht.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Augschburger am 06 Februar 2016, 09:52:07
Hallo Stefan,

vielen Dank! So klappt's jetzt ganz wunderbar.
Ich Depp hab mir immer nur den Inhalt von "buf" nach regexr.com kopiert und bin nie auf die Idee gekommen, die Seite mal mit wget zu holen.  >:( :-X

Aber Dein <td [^>]+>
verstehe ich nicht. Kannst Du mir das bitte noch kurz erklären? ^=Zeilenanfang, aber dann müssen doch zwei schließende spitze Klammern kommen, damit das matched, oder? Nein, blöde Frage, die kommen ja nicht und es matched trotzdem. Ich kapier's nicht.

Und warum funktioniert an den beiden Stellen (vor "2/6" und "Heute")
  <tr class="tr1">
    <td style="width:100%; font-weight: bold;"><a href="/alpspitz-edelsberg-ostallgaeu/schneebericht/">Alpspitz / Edelsberg - Nesselwang</a></td>
    <td class="right nowrap" width="40">20 cm</td>
    <td class="right nowrap" width="40">20 cm</td>
    <td class="right nowrap" width="40">-</td>
   
    <td class="center nowrap"
        style="color: #999999;">
        2/6</td>
    <td style="padding-top: 2px; padding-bottom: 0; padding: 0; padding-top: 2px;"><img src="/images/icons/lifte-pisten/status1.png" border=0 width=17 height=17></td>
    <td class="right nowrap" width="100" >
    Heute, 07:00
    </td>
  </tr>

das <td.*?>
nicht, das müsste doch immer matchen? Oder pfuscht da fhem dazwischen? Mit anderen Worten, selbst wenn ich einen Parser in myUtils schreiben würde, hätte ich dasselbe Problem? Oder würde dort das ".*?" funktionieren?

Danke nochmal!
  Hans-Jörg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Februar 2016, 16:45:22
Hallo Hans-Jörg,

zwischen den [] Klammern werden die erlaubten Zeichen aufgelistet. Ein ^ negiert das. [^>]+ bedeutet also "mehrfach irgendetwas, nur kein >". Ich vermute dass das .*? an den Zeilenumbrüchen scheitert. Fhem ist da unschuldig.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Augschburger am 06 Februar 2016, 16:59:11
Hallo Stefan,

Danke! Das macht Sinn. Das Negieren hatte ich komplett vergessen...
So sieht's dann aus:
(http://up.picr.de/24504721ie.png)

Viele Grüße,
  Hans-Jörg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Bootscreen am 09 Februar 2016, 11:04:45
Moin,

ich weiß nicht warum, aber heute hat sich mein HTTPMOD nach nem Update auf den Stand von letztem Jahr zurückgesetzt. Also hab ich es aus dem ersten Post neu runtergeladen und in FHEM integriert und hab folgende Meldung bekommen:
Too many arguments for main::HTTPMOD_AddToQueue at ./FHEM/98_HTTPMOD.pm line 741, near "1)"
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1115.


Hab jetzt erstmal eine Version aus meinem Backup genommen, vllt sollte da aber nochmal nachgeschaut werden.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gernott am 09 Februar 2016, 21:42:05
Zitat von: Bootscreen am 09 Februar 2016, 11:04:45
Also hab ich es aus dem ersten Post neu runtergeladen und in FHEM integriert und hab folgende Meldung bekommen:
Too many arguments for main::HTTPMOD_AddToQueue at ./FHEM/98_HTTPMOD.pm line 741, near "1)"
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1115.


Bei mir dieselbe Fehlermeldung, nach Erstimplementierung.
Gruß
G.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Februar 2016, 17:47:45
Hallo Oliver und Gernott,

kann es sein, dass Ihr das neue Modul eingespielt habt und dann reload 98_HTTPMOD.pm eingegeben habt und nicht shutdown restart?
In den neuen Versionen haben sich die Aufruf-Parameter bei einigen Funktionen geändert. Wenn man dann das alte Modul bereits geladen hat und dann das Neue nachläd, passen wohl die alten Prototypen-Definitionen nicht zum neuen Code.
Ich wüsste nicht was ich dagegen tun kann. Nach einem Restart sollte aber alles ok sein.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gernott am 10 Februar 2016, 19:56:53
Hallo Stefan

Ja, Deine Annahme stimmt. So stand es auch irgendwo im eq3-Firmwareholen-Thread. Habe nun mal einen Restart gemacht. Damit war das Problem erledigt. Im Log stehen auch keine Fehler.

Vielen Dank!

Gruß
G.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OppiM am 11 Februar 2016, 15:25:46
Hi,

ich benutze die aktuelle Version vom 5.2. um eine XML Struktur auszuwerten. Funktioniert sehr gut, allerdings habe ich diesen Fehler im Log:

error deleting XPathStrict nodeset: Can't call method "cleanup" on an undefined value at ./FHEM/98_HTTPMOD.pm line 1546.


Außer ist mir FHEM ein paarmal quasi eingefroren, das Log wurde zu diesem Zeitpunkt mit folgenden Einträgen gefüllt:
Cannot fork: Cannot allocate memory

Diese Fehler treten auch erst auch, seitdem ich die neuere Version von HTTPMOD benutze. Kann das zusammenhängen?

Gruß,
Michael
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 11 Februar 2016, 16:58:59
Cannot fork: Cannot allocate memory
dein speicher ist zu klein. mit stacktrace kannst du wahrscheinlich erfahren, wer speicher haben wollte.

bei meiner fritzbox kommt es auch hin und wieder, besonders gern mit plotfork=1. nach einem reboot ist dann erstmal wieder gut, bis zur nächsten überforderung. wenn du pech hast, killt der kernel dein fhem.

@stefan
falls die meldung durch httpmod ausgelöst wurde, wäre es schön, wenn zu diesem fehler auch etwas im reading LAST_ERROR erscheinen könnte.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OppiM am 11 Februar 2016, 19:02:42
Hallo Frank,

Zitatdein speicher ist zu klein.
und da denkt man, 8GB Hauptspeicher sollten für ein Linux-System erst mal reichen...

Ich hab gerade mal nach der Speichernutzung von FHEH gesehen, obwohl ich FHEM heute Nachmittag wg. dem Fork-Fehlers neu gestartet hatte, war der FHEM-Prozess schon auf 4GB (!) Speicher angewachsen. Allein beim Schreiben dieses Beitrags ist der FHEM-Prozess wieder von 232M (direkt nach dem Start) auf über 280M angewachsen.

Gibt es eine Möglichkeit festzustellen, welches Modul von FHEM sich den Speicher nimmt? stacktrace hab ich mal gesetzt.

Gruß,
Michael
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 11 Februar 2016, 19:15:09
ich muss mit 125k auskommen und davon will die fritzbox auch noch was, ... man wie ungerecht.  8)
jeder fork dupliziert quasi fhem. eine fhem instanz bekommt bei mir ca 30-40k.
bei diesen gbyte mengen tippe ich bei dir auf dblog, oder du hast noch was anderes laufen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Februar 2016, 22:55:44
Hallo Michael,

Hast Du evt. Einen CubieTruck?
Da hat die XML Bibliothek scheinbar ein Memory leak.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OppiM am 14 Februar 2016, 14:29:07
Hi Stefan,

nein, FHEM läuft auf meinem Linux-Server (Ubuntu, Core i3, 8GB Speicher), der bei mir alle Serveraufgaben abdeckt (SMB, Proxy, MRTG, mySQL, etc.).

Und da der ehr 24x7 läuft, kann er dann auch FHEM mit abdecken. CPU und Speicher sollten da eigentlich für ausreichen, aber in letzter Zeit ist FHEM da sehr gierig geworden. Könnte es an der Umstellung auf DbLog liegen?

Gruß,
Michael
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 Februar 2016, 21:23:26
Hallo Michael,

versuch doch den Fehler einzugrenzen, indem Du einzelne Teile für eine Weile deaktivierst und den Speicherverbrauch alle 10 Minuten protokollierst.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 Februar 2016, 22:12:28
Hallo,

ich habe gerade wieder eine neue Version zum Testen an den ersten Post hier gehängt. Diesmal gibt es ein paar größere Änderungen:

Ich habe setKeyValue und GetKeyValue eingebaut, damit man Passwörter außerhalb der Konfiguration speichern kann.
Zum Setzen muss enableControlSet auf 1 stehen, dann gibt es einem Set-Befehl mit Option storeKeyValue. Dem kann man einen key, z.B. password und einen Wert, z.B. geheim geben. z.B.:

set storeKeyValue password geheim


Zum Verwenden des Passwortes definiert man ein eigenes Replacement mit Mode key, z.B.:

attr mydevice get05Name profile
attr mydevice get05URL http://www.mydevice.local/getprofile?password=%%password%%
attr mydevice replacement02Mode key
attr mydevice replacement02Regex %%password%%
attr mydevice get05Replacement02Value password


Dadurch dass ich in der neuen Version auch bei Get-Kommandos Eingabeparameter erlaubt habe und bei Set-Kommandos das Parsen der Response, sind die Attribute, die auf Map und Expr enden, nicht mehr eindeutig. Früher war Map bei Get für die Ausgabeumwandlung und bei Set für die Eingabeumwandlung zuständig. Heute passt das so alles nicht mehr vernünftig.
Deshalb habe ich IMap und IExpr für die Eingabeverarbeitung und OMap und OExpr für die Ausgabeaufbereitung eingeführt. Die alten Map und Expr Attribute sind damit überholt.

Da es noch einige andere Altlasten in den Attributen gibt - z.B. die Uralt-Syntax readingsNameTemp Temperatur o.ä., enableXPath mit xpath: in der Regex etc. habe ich einen Set-Befehl eingebaut, der die alten Attribute in die neuen verwandelt.

set upgradeAttributes

Bitte vorsichtig testen und vorher die Konfiguration sichern. Bei mir hat es zwar schön funktioniert, aber das muss nichts bedeuten ;-)

Wer noch alte Attribute verwendet bekommt jetzt entsprechende Log-Meldungen.

Für Leute mit SSL-Problemen gibt es das neue Attribut sslArgs. Das kann z.B. so gesetzt werden:

attr myDevice sslArgs SSL_verify_mode,SSL_VERIFY_NONE

Dann findet keine Verifikation mehr statt, was die Sicherheit aushebelt, aber möglicherweise nötig ist, wenn man Geräte mit illegalen Zertifikaten auslesen möchte und die Zertifikate nicht ausgetauscht werden können. Der Wert des Attributes wird in einen Hash gewandelt und an HttpUtils übergeben.
Ebenso gibt es die neuen Attribute sslVersion und httpVersion. Die Werte werden jeweils an HttpUtils durchgereicht.

Gruss
    Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OppiM am 19 Februar 2016, 11:04:31
Hi,

ich hab jetzt mal versucht, den Verursacher für mein Speicherproblem zu identifizieren und es deutet alles auf HTTPMOD hin.

Zum Test haben ich über ein Custom Reading den Speicherbedarf von FHEM aus ps ausgelesen und grafisch dargestellt. Dann die letzte Version von HTTPMOD aus dem Thread installiert und FHEM neu gestartet. Wie man im Anhang sieht steigt der Speicherbedarf kontinuierlich an (zwischen 10:10 und 10:40).

Dann haben ich mein HTTPMOD-Device disabled und FHEM neu gestartet. Wie man sieht bleibt der Speicherverbrauch von FHEM dann recht konstant auf einem Level.

Also verbraucht HTTPMOD scheinbar kontinuierlich Speicher und gibt ihn nicht wieder frei...

Gruß,
Michael
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Cruiser79 am 19 Februar 2016, 11:29:35
Zitat von: OppiM am 19 Februar 2016, 11:04:31
Hi,

ich hab jetzt mal versucht, den Verursacher für mein Speicherproblem zu identifizieren und es deutet alles auf HTTPMOD hin.

Zum Test haben ich über ein Custom Reading den Speicherbedarf von FHEM aus ps ausgelesen und grafisch dargestellt. Dann die letzte Version von HTTPMOD aus dem Thread installiert und FHEM neu gestartet. Wie man im Anhang sieht steigt der Speicherbedarf kontinuierlich an (zwischen 10:10 und 10:40).

Dann haben ich mein HTTPMOD-Device disabled und FHEM neu gestartet. Wie man sieht bleibt der Speicherverbrauch von FHEM dann recht konstant auf einem Level.

Also verbraucht HTTPMOD scheinbar kontinuierlich Speicher und gibt ihn nicht wieder frei...

Gruß,
Michael

Kannst du dein Custom reading hier mal posten?

Könnte vielleicht XML in HTTPMOD das Problem sein?

@schka17:
Ein Speicherloch habe ich in Perl bisher nur bei XML Dokumenten gesehen: da man normalerweise in Perl der Entwickler Speicher nicht explizit freigeben muss, vergisst man gerne, dass das beim XML wegen zirkulaeren Referenzen doch notwendig ist. Kannst Du pruefen, ob einer deiner verwendeten Module XML benoetigt, und evtl. das Modul fuer ein Tag lang deaktivieren?

http://forum.fhem.de/index.php/topic,27223.msg201436.html#msg201436

Gruß,
Tim
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OppiM am 19 Februar 2016, 13:59:41
Hi,

ZitatKannst du dein Custom reading hier mal posten?

klar, kein Problem:

Internals:
   CHANGED
   NAME       FHEMMemoryUsage
   NR         176
   STATE      240180
   TYPE       CustomReadings
   Readings:
     2016-02-19 13:49:59   memory          240180
     2016-02-19 13:49:59   state           OK
Attributes:
   event-min-interval 900
   event-on-change-reading memory
   interval   30
   readingDefinitions memory:qx(FHEMMemoryUsage.sh)
   room       FHEM Server
   stateFormat memory


Und das ist das dazugehörigr Script (FHEMMemoryUsage.sh):
#!/bin/sh
PATH=/bin:/usr/bin:/usr/local/bin/:/usr/sbin:/usr/local/sbin/:/opt/sbin/

ps aux | grep fhem.pl -m 1 | awk '{ print $5 }'


ZitatKönnte vielleicht XML in HTTPMOD das Problem sein?

Das ich HTTPMOD nur für XML benutze, dürfte da das Problem liegen. Derzeit denke ich, ich werde statt HTTPMOD ein Script nehemn und es in ein Custom Reading schreiben, allerdings wollte ich eigenlich so wenig wie möglich extern auslagern...

Gruß,
Michael
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Februar 2016, 18:10:27
Hallo,

das Problem hatten wir hier schon mal.
http://forum.fhem.de/index.php/topic,36837.15.html
damals hab ich die Konfiguration und die XML-Daten bei mir auf Raspian übernommen und der Speicher bleib konstant.
Deshalb fällt es mir schwer was dagegen zu tun (habe keinen Cubietruck).
Es muss wohl ein plattformabhängiges Problem in der XML Bibliothek liegen.

Nutzt sonst noch jemand die XPath Erweiterung auf anderen Plattformen?
Es wäre schön wenn wir das Problem eingrenzen und beheben könnten. Vielleicht gibt es ja einen Workaround im Perl-Code (an der Bibliothek kann ich nichts ändern).

@Michael: kannst Du mal Deine Konfiguration und Beispieldaten und als Datei posten, dann könnte ich die bei mir als file: URL einbinden und versuchen das Problem nachzustellen.
Zudem bräuchte ich noch ein paar Informationen über Deine Plattform (genaue Version etc.) dann bau ich eine ähnliche VM zum Nachstellen ...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Februar 2016, 16:05:22
Hallo,

Bitte probiert mal die neue Version aus. Das Memory-Leak Problem mit dem XML-Parser könnte jetzt gelöst sein.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: no_Legend am 22 Februar 2016, 07:52:36
Guten Morgen,

ich habe gestern mal wieder probiert den SpritPreis Monitor einzubinden.
Leider startet FHEM sobald das define abgesetzt wurde, immer wieder neu.

Die Einbindung habe ich wie folgt probiert:

define SpritMon.Hedd.Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/1221 600

Im Log kann ich nur folgendes finden:
Can't use an undefined value as an ARRAY reference at ./FHEM/98_HTTPMOD.pm line 1840.

Genau erklären kann ich es mir nicht.

Gruß Robert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Noman am 22 Februar 2016, 16:07:03
Hi,

ist es möglich mittels HTTPMOD nicht (wohlgeformte) HTML Dateien mittels XPath auszulesen?

Gruss Norman
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Februar 2016, 17:14:05
Hallo,

Für HTML kann man die Attribute reading01XPath etc. verwenden. Nur reading01XPath-Strict ist für echtes XML.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Februar 2016, 17:17:09
Hallo Robert,

das klingt nach Bug. Allerdings scheinst Du eine ältere Version zu verwenden. Daher stimmt die Zeilennumer mit meiner Version nicht überein. Kannst das bitte nochmal mit der aktuellen Version testen? Dann hilft mir die Fehlermeldung deutlich weiter ;-)

Gruss / danke für's Testen
   Stefan
Titel: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: no_Legend am 23 Februar 2016, 22:10:31
Hab die Neuste version eingebunden und neu gestartet. Nun scheint es zu gehen.

Danke für die Hilfe und das super Modul.

Gruß Robert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 01 März 2016, 14:55:31
Hallo,

ich würde die neue Version gerne demnächst einchecken.
Um damit aber keinen Stress zu provozieren, möchte ich Probleme / neue Fehler so weit wie möglich vermeiden.
Es wäre daher toll wenn noch ein paar Leute die letzte Version durchtesten könnten und mir Feedback geben, ob alles funktioniert. Insbesondere zum Cookie-Handling, der Integration von getKeyValue und dem set upgradeAttributes habe ich noch keine Rückmeldung ob es auch bei Euch funktioniert.

Gruss / vielen Dank
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 01 März 2016, 16:36:36
hallo stefan,

ich habe mich mal getraut und mit der neuesten version bei 3 httpmod devices "set upgradeAttributes" durchgeführt. scheinbar völlig problemlos.

1. uralt definition mit 39 x readingsName und readingsRegex (funktionierte wohl auch noch vor dem set upgradeAttributes)
2. eine neuere definition mit readingXXExpr (funktionierte nicht mehr vor dem set upgradeAttributes)
3. eine neuere definition ohne zu ändernde attribute.

die anderen dinge nutze ich nicht.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HotteFred am 21 März 2016, 21:51:05
Hallo Stefan,

kann ich mehrere URLs hinterlegen? Also getURL1, getURL2?

Danke für die gute Arbeit.
Grüße
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 März 2016, 15:07:40
Hallo Fred,

Du kannst mehrere gets definieren und jedes get kann seine eigene URL haben, z.B. get01URL, get02URL etc.
Oder möchtest Du tatsächlich dass bei einem Get mehrere Requests nacheinander vesrschickt werden?

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andyclimb am 23 März 2016, 22:56:09
Just getting used to using this module.  Looks very powerful.. 
Trying to parse this json string

{"settings":{"currentpreset":255,"effect":"Off"},"device":"tvlights","heap":20864,"power":"0","modes":["Off","SimpleColor","RainbowChase","BobblySquares","Blobs","CuriousCat","Adalight","UDP","DMX"],"currentpresets":[],"code":0,"pixels":118,"MQTT":{"enable":true,"ip":[192,168,1,24],"port":1883},"timer":{"running":false}}


which has the key "modes" which leads to a comma separated list of strings.
I would like these to appear in one reading in the following format:

Zitat
Off,SimpleColor,RainbowChase,BobblySquares,Blobs,CuriousCat,Adalight,UDP,DMX

anybody able to help...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andyclimb am 23 März 2016, 23:34:19
Is there a reason that

Zitat
# No cyclic requests and no main URL needed in this example
define MyDevice none 0

attr MyDevice set01Name Licht
attr MyDevice set01URL http://192.168.1.22/switch=$val
A user command

set MyDevice Licht 1
will be translated into the http GET request

http://192.168.1.22/switch=1
In this example a map would also be helpful, that translates on / off to 0 or 1 and allows the user to select on/of in fhemweb:

attr MyDevive set01IMap 0:off, 1:on

$val MUST be a number.  I'd like to send get requests.... x = y and they are all strings.  seems really strange to me that you can't have


attr MyDevice set01URL http://192.168.1.22/$1=$2


where

set MyDevice Licht mode Adalight 

which would give you the get request

attr MyDevice set01URL http://192.168.1.22/mode=Adalight


Any reason why it can only be 1, and has to be a number?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 24 März 2016, 07:09:18
Kann mir jemand bei meiner Datenlogger Web 2 Anbindung helfen.
Ich blicke da nicht ganz durch wie ich die Daten vernünftig aus dem Fronius IG20 bekomme.
Habe schon einiges getestet.
Daten werden zwar in den buf eingelesen aber da stehe ich dann an.
Nun bekomme ich auch noch diese Meldung gelegentlich.
Messages collected while initializing FHEM:
configfile: Please install JSON Library to use JSON (apt-get install libjson-perl) - error was Can't locate JSON.pm in @INC (you may need to install the JSON module) (@INC contains: /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.20.2 /usr/local/share/perl/5.20.2 /usr/lib/arm-linux-gnueabihf/perl5/5.20 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.20 /usr/share/perl/5.20 /usr/local/lib/site_perl . ./FHEM) at (eval 13) line 2, <$fh> line 9.
BEGIN failed--compilation aborted at (eval 13) line 2, <$fh> line 9.

Habe jedenfalls die Nachinstallation durchgeführt.
sudo apt-get install libjson-perl
Trotzdem funktioniert das ganze nicht nach einem Reboot.

Die Konfiguration sieht so aus:

# Fronius Eingangsdaten JSON PV-Anlagen
define PV_Anlage HTTPMOD none 60
attr PV_Anlage userattr get01Name getHeader1 getHeader2 getURL
attr PV_Anlage extractAllJSON 1
attr PV_Anlage get01Name Fronius_Daten
attr PV_Anlage getHeader1 Content-Type: application/json
attr PV_Anlage getHeader2 Accept: */*
attr PV_Anlage getURL http://192.xxx.xxx.xxx/solar_api/GetInverterRealtimeData.cgi?Scope=System

# Fronius Eingangsdaten PV-Anlagen 1
define PV_Anlage_1 HTTPMOD http://192.xxx.xxx.xxx/solar_api/GetInverterRealtimeData.cgi?Scope=System 60
attr PV_Anlage_1 userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading07ame reading08Name reading08Regex reading09Name reading09Regex
attr PV_Anlage_1 reading01Name DAY_ENERGY
attr PV_Anlage_1 reading01Regex "DAY_ENERGY"[:{\n\t]+"Value"[:\t]+([\d\.]+),
attr PV_Anlage_1 reading02Name TOTAL_ENERGY
attr PV_Anlage_1 reading02Regex "TOTAL_ENERGY"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading03Name YEAR_ENERGY
attr PV_Anlage_1 reading03Regex "YEAR_ENERGY"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading04Name FAC
attr PV_Anlage_1 reading04Regex "FAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading05Name IAC
attr PV_Anlage_1 reading05Regex "IAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading06Name IDC
attr PV_Anlage_1 reading06Regex "IDC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading07Name PAC
attr PV_Anlage_1 reading07Regex "PAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading08Name UAC
attr PV_Anlage_1 reading08Regex "UAC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 reading09Name UDC
attr PV_Anlage_1 reading09Regex "UDC"[:{\n\t ]+"Value"[ : \t]+([\d\.]+),
attr PV_Anlage_1 stateFormat {sprintf("%d", ReadingsVal($name,"PAC",0))}
attr PV_Anlage_1 userReadings PAC
attr PV_Anlage_1 verbose 2


Mit der Datenanforderung bekomme ich Daten in der Form:
http://192.xxx.xxx.xxx/solar_api/GetInverterRealtimeData.cgi?Scope=System
{
"Head" : {
"RequestArguments" : {
"Scope" : "System"
},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2016-03-24T07:08:27+01:00"
},
"Body" : {
"Data" : {
"PAC" : {
"Unit" : "W",
"Values" : {
"1" : 41
}
},
"DAY_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 0
}
},
"YEAR_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 243000
}
},
"TOTAL_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 19942000
}
}
}
}
}



Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HotteFred am 24 März 2016, 09:05:57
Zitat von: StefanStrobel am 23 März 2016, 15:07:40
Du kannst mehrere gets definieren und jedes get kann seine eigene URL haben, z.B. get01URL, get02URL etc.

Hallo Stefan,

ja, genau so möchte ich es.

Danke und Grüße
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 März 2016, 10:08:04
Hallo andyclimb,

Parameters to set commands can be text if you set the attribute set01TextArg to 1.

To get started with JSON parsing I would use ExtractAllJSON first. It creates a reading for every key and then you can refine your configuration and limit the extraction to the key you want by specifying reading01JSON or get01JSON.

The wiki contains more examples and explanations.

Regards,
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 März 2016, 10:51:44
Hallo Chris,

Wenn Perl die JSON Library nicht laden kann, ist die offenbar nicht korrekt / vollständig installiert.
Hast du im Perl INC-Pfad mal nach JSON.pm gesucht? Gab es bei der Installation irgendwelche Fehlermeldungen?

Das ganze ist auf jeden Fall kein großes Problem. Der JSON Parser ist zwar für manche Fälle eleganter, aber mit Regexes kann man alles auch machen.

Für Deinen PAC-Wert sollte z.B. PAC[^\:]+:[^\:]+:[^\:]+:[^\:]+: ([\d\.]+) Funktionieren.

Wenn es mit Zeilenumbrüchen und Strings zwischen dem relevanten Key und dem gesuchten Wert zu kompliziert wird, hilft es oft wenn man die regex negativ formuliert. Im obigen Beispiel ist das 4 mal "kein Doppelpunkt" und dann ein Doppelpunkt ...

Gruß
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andyclimb am 25 März 2016, 00:59:22
stefan.

Thanks for the help.  That worked great!!!  thank you.  Is there a way to have more than one argument?

I have ExtractAllJSON, and it works for everything, except where there is an array of strings.  it will extract an array of key value pairs, but not strings into a single reading...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 25 März 2016, 10:28:20
Habe sudo apt-get install libjson-perl nochmals ausgeführt und neu gestartet.

Scheint jetzt zu funktionieren.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 26 März 2016, 16:06:53
Hello andyclimb,

If you pass a string this could of course be something like x=y. If you need more flexibility you can use user defined replacements in HTTPMOD. Then you can put as many variables / values in URLs, headers or post data as you like.

The problem with arrays of strings is a bug. I'm currently testing a fix however so far it creates individual readings for each element. My plan is to allow to recombine these elements into one reading with a recombineExpr as it works for regex and xpath already.
I'll probably post a version for testing in the next days.

Regards,
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 März 2016, 13:25:24
Hello andyclimb,

can you please test the attached new Version of HTTPMOD?
It should now also extract arrays of strings.

To get one single reading with thelist of modes you need to define

attr MyDevice reading01Name ModesList
attr MyDevice reading01JSON modes
attr MyDevice reading01RecombineExpr join ",", @matchlist

This will cause a new reading called ModesList to be created. It will be a comma seperated list of all json objects that start with modes.


regards,
    Stefan

EDIT: 28.3.16 - neuere Version im nächsten Post
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 März 2016, 21:41:09
Hier nochmal eine neue Version mit einem Fix für das Cookie-Handling.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: pejonp am 03 April 2016, 21:13:47
Hallo Stefan,

ich möchte diese XML Daten auslesen und als Reading darstellen. Klappt aber nicht. Hier meine Definitionen.


define SB HTTPMOD http://Ip:3480/data_request?id=status&output_format=xml 60
attr SB userattr reading01Name reading01XPath-Strict reading02Name reading02XPath reading02XPath-Strict reading03Name reading03XPath-Strict reading04Name reading04XPath-Strict requestHeader1
attr SB enableXPath-Strict 1
attr SB event-on-change-reading .*
attr SB group SB
attr SB reading01Name devices
attr SB reading01XPath-Strict //devices/text()
attr SB reading02Name states
attr SB reading02XPath-Strict //states/text()
attr SB reading03Name devices-1
attr SB reading03XPath-Strict //devices-1/text()
attr SB reading04Name categories
attr SB reading04XPath-Strict //categories/text()
attr SB room SB
attr SB verbose 5
define FileLog_SB1 FileLog ./log/SB1-%Y-%m.log  SB
attr FileLog_SB1 logtype text
attr FileLog_SB1 room Haus


Es werden diese Readings angelegt und mehr passiert nicht. Was muss ich anders machen ? Vielen Dank.

devices-1        2016-04-03 20:58:22

Jörg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 03 April 2016, 21:27:48
hallo stefan,

ich habe ein zyklisches httpmod device mit zwei get auf unterschiedliche url's, die quasi gemeinsam abgeholt werden.
dabei gibt es kleine wünsche/probleme.

1. MATCHED_READINGS
hier wird das ergebnis jedes einzelnen get getrennt ausgegeben. am ende des kompletten durchlaufs stehen hier leider nur die readings des letzten get aufrufs.
da ich am ende der gesamtem prozedur ein userreadings triggern möchte und die namen aller erzeugten readings benötige, wäre es schön, wenn hier das gesamtergebnis enthalten wäre.

2. probleme mit event-on-change
ich habe "event-on-change-reading .*" gesetzt, also auf alles. das scheint für das 2. get nicht zu wirken. obwohl die readings immer gleich bleiben, werden trotzdem für alle readings events erzeugt.

3. getXXOExpr
hier funktioniert leider keine substitution wie zb
$val =~ s/^([^_]+)([^-]+)(..)(.*)$/$1.$3.$2.$4/
bei erfolg wird $val=1 gesetzt, sonst nichts. kann man das reparieren, oder muss ich das anders schreiben? ersatzweise funktioniert aber zb sowas:
($val=~m/^([^_]+)([^-]+)(..)(.*)$/)?($1.$3.$2.$4):"error"

edit:

4. MaxAge...
für jedes get habe ich getXXMaxAge=10 und getXXMaxAgeReplacementMode=delete separat definiert.
nun verhält es sich so, dass bei jedem einzelnen request alle readings geprüft und ggf gelöscht werden und nicht nur die readings des korrespondierenden requests. das hat zur folge, dass wenn ich einen manuellen get befehl auf einen einzelnen request ausführe, die readings des zweiten get gelöscht werden.
ist das so gewollt, oder könnte man die prüfung auf die zum get korrespondierenden readings beschränken?

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 April 2016, 16:38:11
Hallo Jörg,

bei solchen Problemen liegt es meistens am angegebenen XPath.
Leider bin ich da auch nicht der absolute XPath-Experte. Mit ein bischen Rumprobieren bekommt man es aber meistens hin. Vielleicht liest ja jemand mit, der tiefer im XML / XPath Thema drinsteckt und sich das File mal genauer ansehen kann?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 April 2016, 16:49:13
Hallo Frank,

zu 4) Das ist so gewollt. Wenn MaxAge 10 gesetzt ist und der Wert schon älter als 10 Sekunden ist, dann wird die Reaktion getriggert, sobald das Modul eine Chance dazu hat (ohne viele weitere InternalTimer zu setzen) - also auch beim nächsten Get für andere Werte.
Der MaxAge Wert sollte daher so groß sein, dass er nur greift wenn die übliche Aktualisierung schon gelaufen ist.

zu 3)
$val wird der OExpr nur zum Lesen bereitgestellt. Das Ergebnis der Expression wird dann weiterverwendet.

zu 1) sollte machbar sein. Schau ich mir an.
zu 2) das muss ich mir noch genauer ansehen. Wird eine Weile dauern.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 06 April 2016, 13:39:58
Zitat von: StefanStrobel am 05 April 2016, 16:49:13
zu 4) Das ist so gewollt. Wenn MaxAge 10 gesetzt ist und der Wert schon älter als 10 Sekunden ist, dann wird die Reaktion getriggert, sobald das Modul eine Chance dazu hat (ohne viele weitere InternalTimer zu setzen) - also auch beim nächsten Get für andere Werte.
Der MaxAge Wert sollte daher so groß sein, dass er nur greift wenn die übliche Aktualisierung schon gelaufen ist.
ok, dann muss ich mir etwas anderes überlegen.
denn eigentlich benötige ich keine zeitabhängige löschung, sondern eine löschung eventuell noch vorhandener daten des letzten requests, aber nur, wenn der aktuelle request erfolgreich war. da die anzahl der readings eines aktuellen request kleiner sein kann, als die anzahl des alten requests, würden in diesem fall ein paar alte und damit ungültige readings erhalten bleiben. ich arbeite jeweils mit regex und regexopt=g. ausserdem müsste das für jedes get separat funktionieren.

mal sehen, was du bei matched_readings zauberst.

edit:
Zitatzu 2) das muss ich mir noch genauer ansehen. Wird eine Weile dauern.
nachdem ich nun alle maxage attribute entfernt habe, funktioniert event-on-change scheinbar problemlos. also entwarnung.

gruss frank

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rtv am 08 April 2016, 11:59:17
Zitat von: reibuehl am 20 Januar 2016, 21:27:02
Nach der Umstellung auf einzelne Readings und hinzufügen von readingXXEncode utf-8 funktionieren bei mir nun auch die Umlaute. Nur zu meinem Verständnis: Wie hätte man das bei extractAllJSON für alle readings definieren müssen?

Hallo! Ich habe auch (bei weather underground) das Problem, dass die Seite korrekt geholt wird und direkt nach dem Update die Readings in Ordnung sind, nach einem Refresh aber die Umlaute nicht richtig dargestellt werden. Würde aber gerne bei extractAllJSON bleiben...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 April 2016, 21:20:23
Hallo,

ich setze das mal auf die Wunschliste für die nächste Überarbeitung. ExtractAllJSON könnte z.B. ein neues Attribut AllEncode verwenden ...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 April 2016, 21:54:09
Hallo Frank,

was ist denn Dein Anwendungsfall für die matched_readings?
Da HTTPMOD intern asynchron arbeitet und bei einem update-Zyklus die HTTP-Requests einfach in eine Queue packt und jede Response separat ausgewertet wird, ist beim Lesen nicht erkennbar, ob ein Zyklus tatsächlich vorbei ist und wann somit der richtige Zeitpunkt wäre um ein gesamt_matched_readings zu erzeugen...
Vielleicht lässt sich Dein Anwendungsfall ja auch anders lösen?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 09 April 2016, 14:58:22
hallo stefan,

ZitatDa HTTPMOD intern asynchron arbeitet und bei einem update-Zyklus die HTTP-Requests einfach in eine Queue packt und jede Response separat ausgewertet wird, ist beim Lesen nicht erkennbar, ob ein Zyklus tatsächlich vorbei ist und wann somit der richtige Zeitpunkt wäre um ein gesamt_matched_readings zu erzeugen...
das hatte ich mir fast schon gedacht. vor allem auch im zusammenhang mit getXXpolldelay eigentlich unmöglich.

anwendung:
ich sammel von unterschiedlichen webseiten bereitgestellte firmware für homematic devices ein.
nach den requests wird gecheckt, ob es neue firmware für die eigenen devices gibt und entsprechend angezeigt. bisher hatte ich nur eine url für die daten und habe MATCHED_READINGS als auslöser (trigger für userreading) für den abschliessenden firmware check genutzt. ausserdem habe ich hier die liste aller aktuellen readings, um auf die daten zuzugreifen. zusätzlich können tote readings mit maxage gelöscht werden. http://www.fhemwiki.de/wiki/HomeMatic_Firmware_Update#Tool_zur_Firmware_Versionspr.C3.BCfung (http://www.fhemwiki.de/wiki/HomeMatic_Firmware_Update#Tool_zur_Firmware_Versionspr.C3.BCfung)

bei erweiterung auf mehrere webseiten gibt es nun die beschriebenen probleme.

grundsätzlich habe ich nun einigermassen erfolgreich auf 2 userreadings umgebaut.
das erste wird durch MATCHED_READINGS getriggert, sammelt die readings ein und löscht ggf tote readings.
das zweite wird durchs erste getriggert und macht die auswertung.

problematisch wird es, wenn MATCHED_READINGS einen leeren string liefert (zb webseite verändert, oder nicht erreichbar). hier kann ich nicht erkennen, welches get gerade "geliefert" hat, um zb die entsprechenden readings nun zu löschen. wäre es denn möglich, im reading MATCHED_READINGS einen indikator voran zu stellen, um zu erkennen, welches get gerade geliefert hat?

ausserdem wäre es hilfreich, wenn die automatische nummerierung, auch bei nur einem erzeugten reading, die nummerierung benutzen würde. vielleicht könnte man dies abhängig von der benutzung des attributes AutoNumLen einführen, damit es nicht grundsätzlich wirksam ist.

gruss frank
Titel: HTTPMOD mit replacement der URL / Güte der Berliner Luft
Beitrag von: hartenthaler am 10 April 2016, 17:56:30
Ich möchte die Luftgüteparameter der Berliner Luft auswerten. Aber ich hänge noch etwas mit dem variablen URL-Aufruf im HTTPMOD Modul unter Verwendung von replacement. Die Daten werden jeweils zum Vortag bereit gestellt und sind dann unter einer URL abrufbar in der das Datum vorkommt. In der URL Definition im HTTPMOD verwende ich das Wort "gestern" als Platzhalter und will es nun per replacement ersetzen. Das geht von Hand schon durch die folgende Definition:

Internals:
   DEF        http://www.stadtentwicklung.berlin.de/umwelt/luftqualitaet/de/messnetz/tageswerte/download/gestern.html 60
   NAME       Luftguete_Frohnau
   TYPE       HTTPMOD
...
Readings:
     2016-04-09 20:54:09   Zeitpunkt       08.04.16
...
Attributes:
   reading01Expr $val
   reading01Name Zeitpunkt
   reading01Regex Am <b>(.*)</b>
...
   replacement0Mode text
   replacement0Regex (gestern)
   replacement0Value 20160408
   stateFormat Zeitpunkt: SO2:so2tag/so2mittel µg/m³, Ozon: ozon1std/ozon8std µg/m³

Aber nun soll nicht der Text "gestern" in der URL durch den Text "20160408" ersetzt werden, was - wie gesagt - bereits gut klappt, sonder es soll natürlich jeweils das gestrige Datum verwendet werden. Also habe ich den replacement0Mode auf expression gesetzt, aber ich schaffe es nicht den replacement0Value richtig zu formulieren. Auf Shell-Ebene liefert der folgende Code den richtigen Wert:
perl -w -e '@yest=localtime(time-86400);printf "%d%.2d%.2d",$yest[5]+1900,$yest[4]+1,$yest[3];'
Aber wie bekomme ich das richtig in fhem formuliert?

Zum Testen hole ich mir die Seite derzeit alle 60 Sekunden, später will ich dann diesen HTTPMOD-Parameter auf 86400 setzen, also tägliches Abholen, oder macht man das geschickter mit einem at Kommando? Wie?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Fritz007 am 13 April 2016, 19:36:10
Hallo zusammen,

ich bin erst seit Kurzem stolzer Besitzer eines RPI und tüftle grade mit FHEM rum. Zur Zeit versuche ich BACNet-Objektinformationen via Webservice Schnittstelle in FHEM mittels HTTPMOD Modul zu inkludieren.
Habe es meiner Meinung nach auch schon geschafft die Seite samt Informationen auszulesen. Leider bin ich daran gescheitert, Readings zu definieren womit ich den Wert des Present-Value auslesen kann.

Es wäre schön, wenn einer mal einen Blick auf die XML und die importierten Daten schaut und mir vielleicht einen Anstoß gibt, wie ich diese Daten auslesen kann.

Vielen Dank und schönen Gruß

Fritz
Titel: Antw:HTTPMOD mit replacement der URL / Güte der Berliner Luft
Beitrag von: frank am 14 April 2016, 14:24:15
Zitat von: hartenthaler am 10 April 2016, 17:56:30
Ich möchte die Luftgüteparameter der Berliner Luft auswerten. Aber ich hänge noch etwas mit dem variablen URL-Aufruf im HTTPMOD Modul unter Verwendung von replacement. Die Daten werden jeweils zum Vortag bereit gestellt und sind dann unter einer URL abrufbar in der das Datum vorkommt. In der URL Definition im HTTPMOD verwende ich das Wort "gestern" als Platzhalter und will es nun per replacement ersetzen. Das geht von Hand schon durch die folgende Definition:

Internals:
   DEF        http://www.stadtentwicklung.berlin.de/umwelt/luftqualitaet/de/messnetz/tageswerte/download/gestern.html 60
   NAME       Luftguete_Frohnau
   TYPE       HTTPMOD
...
Readings:
     2016-04-09 20:54:09   Zeitpunkt       08.04.16
...
Attributes:
   reading01Expr $val
   reading01Name Zeitpunkt
   reading01Regex Am <b>(.*)</b>
...
   replacement0Mode text
   replacement0Regex (gestern)
   replacement0Value 20160408
   stateFormat Zeitpunkt: SO2:so2tag/so2mittel µg/m³, Ozon: ozon1std/ozon8std µg/m³

Aber nun soll nicht der Text "gestern" in der URL durch den Text "20160408" ersetzt werden, was - wie gesagt - bereits gut klappt, sonder es soll natürlich jeweils das gestrige Datum verwendet werden. Also habe ich den replacement0Mode auf expression gesetzt, aber ich schaffe es nicht den replacement0Value richtig zu formulieren. Auf Shell-Ebene liefert der folgende Code den richtigen Wert:
perl -w -e '@yest=localtime(time-86400);printf "%d%.2d%.2d",$yest[5]+1900,$yest[4]+1,$yest[3];'
Aber wie bekomme ich das richtig in fhem formuliert?

Zum Testen hole ich mir die Seite derzeit alle 60 Sekunden, später will ich dann diesen HTTPMOD-Parameter auf 86400 setzen, also tägliches Abholen, oder macht man das geschickter mit einem at Kommando? Wie?
probiere mal so, oder so ähnlich:
sprintf("%d%.2d%.2d",(localtime(time-86400))[5]+1900,(localtime(time-86400))[4]+1,(localtime(time-86400))[3])
das tägliche pollen kannst du auf beide arten machen.
mit at hat wohl den vorteil, dass man den request auf eine bestimmte uhrzeit mit dem "attr my_at alignTime" festlegen könnte. dann müsstest du im def von httpmod für den zyclus "0" setzen und über das at ein "set Luftguete_Frohnau reread" ausführen.
eventuell muss man zum "freischalten" des befehls reread erst das attr enableControlSet setzen. einfach probieren.

so ein attribut wäre für httpmod natürlich auch was feines.  :)

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 14 April 2016, 14:36:36
Zitat von: Fritz007 am 13 April 2016, 19:36:10
Hallo zusammen,

ich bin erst seit Kurzem stolzer Besitzer eines RPI und tüftle grade mit FHEM rum. Zur Zeit versuche ich BACNet-Objektinformationen via Webservice Schnittstelle in FHEM mittels HTTPMOD Modul zu inkludieren.
Habe es meiner Meinung nach auch schon geschafft die Seite samt Informationen auszulesen. Leider bin ich daran gescheitert, Readings zu definieren womit ich den Wert des Present-Value auslesen kann.

Es wäre schön, wenn einer mal einen Blick auf die XML und die importierten Daten schaut und mir vielleicht einen Anstoß gibt, wie ich diese Daten auslesen kann.

Vielen Dank und schönen Gruß

Fritz
was genau hast du denn schon probiert? das wiki und die commandref kennst du?
es gibt sicherlich viele möglichkeiten. zb mit reading01Name plus reading01Regex

regex kann man zb gut testen https://regex101.com/ (https://regex101.com/)

eventuell mal diese regex probieren:
"present-value" value="([^"]+)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Fritz007 am 14 April 2016, 18:56:47
Hallo Frank,

vielen Dank für dein Feedback. Es funktioniert!
Habe wirklich nicht viel Ahnung davon und habe mir die beiden folgenden attr hinzugefügt:

reading01Name present-value

reading01XPath-Strict /Real[present-value]/text()

Habe mir verschiedene Codes angeschaut wo mit XML-Informationen gearbeitet wurde. Leider habe ich dazu nicht so viel gefunden. Somit kam der zweite attr zustande. Bin davon ausgegangen, dass man evtl. mit XPath mehr Funktionen des BACNet-Objekts nutzen kann. Evtl. Sollwerte verändern etc.

Vielleicht hast du noch einen Rat, wie ich ggf. Sollwerte mit der "set"-Funktion über XPath setzen kann?

Vielen Dank und Grüße
Fritz
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 April 2016, 14:47:59
Hallo Frank,

hier mal ein Zwischen-Update:

Bei ShowMatched wird jetzt auch UNMATCHED_RADINGS und LAST_REQUEST gesetzt. Das sollte für Deinen Fall hilfreich sein. Per Last-Request kannst Du erkennen, welcher Get den Request ausgelöst hat.

Ich hab auch mal ein DeleteReadingOnError, DeleteReadingOnUnmatched sowie AlignTime auf die Wunschliste gepackt. mal sehen wann ich dazu komme.

Gruss
    Stefan

EDIT 28.4.16 Neuere Version in späterem Post
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Luigi am 16 April 2016, 17:50:32
Hallo,

ich versuche aus xml Werte mit XPath-Strict auszulesen.

z.b.

<root>
   <temperature id="01" value="8.0"/>
   <temperature id="02" value="-8.0"/>
</root>


mit attr xx reading01XPath-Strict //temperature/@value

werden folgende Readings angelegt:

unnamed01-1   value="8.0"
unnamed01-2   value="-8.0"

Ich möchte aber nur den Wert ohne "value=" im Reading haben.

Wie kann ich das erreichen?

Gruß
Luigi
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 April 2016, 09:01:29
Hallo Luigi,

ich selbst würde es statt mit XPath mit Regex machen.

id="01"[^0-9]+([\-0-9]+) oder ähnlich.

Wenn Du es mit XPath machen möchtest, würde ich einen eigenen Thread aufmachen, dem man ansieht, dass es eine XPath-Frage ist. Vielleicht sieht es dann ein XPath-Experte ;-)

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 26 April 2016, 09:28:26
Zitat von: StefanStrobel am 16 April 2016, 14:47:59
Hallo Frank,

hier mal ein Zwischen-Update:

Bei ShowMatched wird jetzt auch UNMATCHED_RADINGS und LAST_REQUEST gesetzt. Das sollte für Deinen Fall hilfreich sein. Per Last-Request kannst Du erkennen, welcher Get den Request ausgelöst hat.

Ich hab auch mal ein DeleteReadingOnError, DeleteReadingOnUnmatched sowie AlignTime auf die Wunschliste gepackt. mal sehen wann ich dazu komme.

Gruss
    Stefan
danke, schaue ich mir demnächst genauer an.

edit: LAST_REQUEST funktioniert prächtig!  :)

gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 April 2016, 21:01:01
Hallo,

hier nochmal eine neue Version. Ich habe versucht eine sinnvolle Interpretation vom DeleteIfUnmatched und DeleteOnError einzubauen:


get|reading[0-9]*DeleteIfUnmatched

If set to 1 this attribute causes certain readings to be deleted when the parsing of the website does not match the specified reading. Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be deleted if the same operation does not parse this reading again. This is especially useful for parsing that creates several matches / readings and the number of matches can vary from request to request. For example if reading01Regex creates 4 readings in one update cycle and in the next cycle it only matches two times the the readings containing the remaining values from the last round will be deleted.

get|reading[0-9]*DeleteOnError
If set to 1 this attribute causes certain readings to be deleted when the website can not be reached and the HTTP request returns an error. Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be deleted if the same operation returns an error.

Gruss
    Stefan


Edit 9.5.16: angehängtes Modul entfernt, neue Version in späterem Post
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 28 April 2016, 22:09:07
Guten Abend zusammen,

nachdem ich hier (https://forum.fhem.de/index.php/topic,35785.0.html) bisher erfolglos versucht habe, über das Heimnetzwerk meinem Stromspeicher die passenden Werte zu entlocken, habe ich nun mal überlegt, ob es nicht auch vielleicht über die öffentliche Internetseite funktioniert.

Mein Problem ist, dass ich auch nach Studium des wikis überhaupt nicht weiß, wie ich HTTPMOD entsprechend einrichten muss, da die Seite einen login benötigt.
Ich habe mir den header etc. der Seite mal mit dem Firefox Inspektor angesehen und die entsprechenden screenshots beigefügt.

Nach dem login gelangt man auf die Übersichtseite, und der Reiter "Antwort" im Firefox Inspektor (https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXXXXXXXXX) liefert genau die Werte, die ich brauche.
Es wird wohl auch ein cookie mit session-id und einem "secret" bei jedem login und/oder nach gewisser Zeit erneuert...

Vielleicht könnt ihr mir ja weiterhelfen und/oder es für einen Dummie wie mich möglichst einfach erklären...  :-[
Mir steht da echt kein Wissen im Weg.

Vielen Dank schonmal für jegliche Hilfe!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 April 2016, 22:10:22
Guten Abend zusammen,

ich habe heute nochmal ein wenig getüftelt mit der Website meines Speichers, aber ich komme irgendwie nicht weiter...  :(
Insbesondere, was die Umsetzung mit einem notwendigen login plus cookie angeht.

Ich habe zwar schon hier (https://forum.fhem.de/index.php?topic=30418.0) und hier (https://forum.fhem.de/index.php?topic=39904.0) einiges dazu gelesen, aber ich steh trotzdem noch auf dem Schlauch.

Ich weiß z.B. einfach nicht, wie die Attribute für sidHeader, sidURL, sidData aussehen müssen...

Hier nochmal die konkreten Daten aus dem Firefox Inspektor...mit der Burp Suite komm ich irgendwie nicht an die Sachen, da die Seite damit nicht ordentlich läd.

Also,
zuerst habe ich die login-Seite im browser aufgerufen:
https://mein-senec.de/monitoring/

Dort finde ich dann folgendes in der Netzwerkanalyse:
Anfragemethode GET

Anfragekopfzeilen:
Host: mein-senec.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Connection: keep-alive


Dann habe ich die Elemente für E-mail und Passwort ausgewählt, um den html-Abschnitt zu bekommen.
Dazu siehe die Bildanhänge.

Nach Eingabe von E-mail und Passwort wird wohl erstmal folgende Seite geladen:
https://mein-senec.de/monitoring/json/auth/login.php

Dort finde ich dann folgendes in der Netzwerkanalyse:
Anfragemethode POST

Anfragekopfzeilen:
Host: mein-senec.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/plain, */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Content-Type: application/json;charset=utf-8
Referer: https://mein-senec.de/monitoring/
Content-Length: 59
Connection: keep-alive

Antwortkopfzeilen:
Connection: Keep-Alive
Content-Length: 17
Content-Type: application/json
Date: Fri, 29 Apr 2016 19:34:39 GMT
Expires: Fri, 29 Apr 2016 20:34:39 GMT
Keep-Alive: timeout=5, max=100
Server: Apache/2.4.10 (Debian)
Set-Cookie: ies_sessid=5723b74f77d35; path=/
ies_secret=GCShrhUc6MWKlU5r; path=/


Weiterhin stehen unter dem Reiter "Cookies" im Inspektor die Set-Cookies von oben als Antwort-Cookies und unter Parameter email und password im Klartext.

Dann wird die Übersichtseite mit den Werten geladen:
https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXXXXXXXXXXXXX

Dort finde ich dann folgendes in der Netzwerkanalyse:
Anfragemethode GET

Anfragekopfzeilen:
Host: mein-senec.de
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/plain, */*
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate, br
Referer: https://mein-senec.de/monitoring/
Cookie: ies_sessid=5723b74f77d35; ies_secret=GCShrhUc6MWKlU5r
Connection: keep-alive

Antwortkopfzeilen:
Connection: Keep-Alive
Content-Length: 532
Content-Type: application/json
Date: Fri, 29 Apr 2016 19:34:40 GMT
Expires: Fri, 29 Apr 2016 18:34:40 GMT
Keep-Alive: timeout=5, max=96
Server: Apache/2.4.10 (Debian)


Hier stehen im Inspektor unter "Cookies" die oben genannten cookies als Anfrage-Cookies und unter Antwort die Werte, die ich auslesen möchte.

Kann mir hierbei jemand helfen, wie ich ein entsprechendes HTTPMOD aufbauen muss, um an die Werte zu kommen?

Vielen Dank schonmal!!!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 01 Mai 2016, 12:28:39
Hallo Andreas,

da Deine Site offensichtlich Cookies verwendet, ist es schonmal hilfreich das Cookie-Handling Bei HTTPMOD anzuschalten.
Dann benötigst Du eine Regex zum Erkennen, dass ein Login benötigt wird.
Dann musst Du als Login-Step (sid01 etc) genau die Daten an die Site schicken, die auch Dein Browser beim Absenden des Formulars mit Username und Passwort sendet.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 02 Mai 2016, 20:42:13
Hallo zusammen,

danke erstmal an Stefan für die Tipps, aber ich krieg es nicht auf die Kette...wahrscheinlich bin ich zu doof dafür... :-[
Ich muss wohl mal an die Hand genommen werden...  :'(

DEF HTTPMOD
https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=meineID 60

Diese Attribute habe ich mal gesetzt:
enableCookies 1
reAuthRegex .*fehlgeschlagen.*
sid1Data "email":"meine@email.de","password":"meinpasswort"
sid1Header1 Content-Type: text/html,application/xhtml+xml,application/xml
sid1URL https://mein-senec.de/monitoring/


Im buf erscheint daraufhin aber immer noch:
HTTP/1.1 403 Forbidden Date: Mon, 02 May 2016 17:20:32 GMT Server: Apache/2.4.10 (Debian) Expires: Mon, 02 May 2016 16:20:32 GMT Content-Length: 1 Content-Type: application/json

Ich hab dann mal mit Burp - funktioniert nun - das Ganze mitgeschnitten und ein paar scrennshots angehängt.

Rufe ich die Seite https://mein-senec.de/monitoring auf, wird erstmal im Hintergrund die Seite /monitoring/json/auth/userdata.php angefordert.
Mit Fehler 403, da ja noch keine login-Daten da sind. (s. Anhänge 01_Burp_xxx).

Dann gebe ich user (e-mail-Adresse) und Passwort ein, und es wird die Seite /monitoring/json/auth/login.php aufgerufen.
Im request dazu stehen e-mail und Passwort, im response dann eine Erfolgsmeldung, und es werden zwei cookies generiert (s. Anhänge 02_Burp_xxx).

Danach gehts dann nochmal auf die Seite /monitoring/json/auth/userdata.php, und die Benutzerdaten werden dort verarbeitet/geholt(?) (s. Anhang 03_Burp_xxx).

Dann wird die Seite /monitoring/json/status/getstatusoverview.php?id=meineID geladen, die im response die interessenten Daten enthält (s. Anhänge 04_Burp_xxx).

So, nun steh ich da und weiß, ehrlich gesagt, nicht, was ich machen soll bzw. wie ich ein entsprechenden HTTPMOD aufbauen kann, um an die Daten zu gelangen... :-[

Vielleicht kann mir ja jemand helfen, oder es mir möglichst einfach und verständlich erklären...
Ich hab leider keine Idee, wie ich weiterkomme.

Vielen Dank schonmal!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Mai 2016, 18:19:52
Hallo Andreas,

drei Fehler fallen mir spontan auf:

1) Der Post-Request, in dem die Login-Daten stehen, sollte laut Burp Mitschnitt an https://meine-senec.de/monitoring/json/auth/login.php gehen.
In Deiner Konfig hast Du für den ersten Authentisierungsschritt aber sid1URL https://mein-senec.de/monitoring/ angegeben.

2) Die Login-Daten werden laut Burp als Post Daten mit {"email":"xy", "Password":"geheim"} gesendet.
In Deiner Konfig steht aber  sid1Data "email":"meine@email.de","password":"meinpasswort". Da fehlen die geschweiften Klammern.

3) Die Header, die Du mitschickst stimmen auch nicht mit den Headern aus dem Burp-Mitschnitt Login_request überein.

Ich hoffe das hilft Dir weiter.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 04 Mai 2016, 21:02:24
Zitat von: StefanStrobel am 04 Mai 2016, 18:19:52
Der Post-Request, in dem die Login-Daten stehen, sollte laut Burp Mitschnitt an https://meine-senec.de/monitoring/json/auth/login.php gehen.
In Deiner Konfig hast Du für den ersten Authentisierungsschritt aber sid1URL https://mein-senec.de/monitoring/ angegeben.

Hallo Stefan,

erstmal vielen Dank für deine Tipps und Mithilfe!

Dann hab ich das wohl etwas falsch verstanden...ich dachte als sid1URL muss ich die Seite angeben, auf der ich die Zugangsdaten eingebe...

Ich werd mal weiter testen und berichten.

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 04 Mai 2016, 21:44:31
Horrido, es läuft!!!

Danke nochmal für deine Hilfe Stefan!

Also, hier nochmal kurz zusammengefasst:

1.)
DEF des HTTPMOD:
https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=<MEINEID> <Intervall>

2.)
folgende Atrribute setzen, damit die Werte ausgelesen und (erstmal) sämtliche Readings gesetzt werden:

enableCookies 1
extractAllJSON 1
reAuthRegex {"success":false}
sid1Data   {"email":"<email>","password":"<Passwort>"}
sid1Header1 Content-Type: application/json
sid1Header2 Accept: */*
sid1URL    https://mein-senec.de/monitoring/json/auth/login.php


***EDIT***
Folgendes Attribut muss noch unbedingt gesetzt werden, hatte ich irgendwie vergessen:
requestHeader1  Cookie: ies_sessid=<cookie1>; ies_secret=<cookie2>

Die jeweils entsprechende Bezeichnung von <cookieX> kann man mit burp oder den Entwicklertools der browser ermitteln.

***ENDE EDIT***

Dann kann man noch nach Belieben seine Readings auswählen und anpassen...

Vielleicht kann es ja noch jemand gebrauchen...Viel Erfolg!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 09 Mai 2016, 11:19:22
Hi Stefan,

ich wollte nochmal fragen ob das vielleicht machbar wäre?
Zitat von: SirUli am 29 Januar 2016, 23:33:391. MaxAgeReplacementMode: Wäre super wenn man dort auch "reading" nehmen könnte, sodass ich den Wert auf ein anderes Reading setzen könnte. Anwendungsfall wäre die Anzeige von Straßenbahn-Abfahrtszeiten. Meist wird die "Live-Anzeige" mitgeliefert, jedoch ab und an eben nicht. Dann wäre es super, wenn ich das Reading auf die "Fahrplan-Zeit" setzen könnte

Tausend Dank im Voraus!

Viele Grüße,
Uli
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Mai 2016, 20:53:51
Hallo,

anbei eine neue Version zum Testen.

Neue Features sind:
- alignTime
- neue MaxAgeReplacementMode-Optionen reading und internal

bereits in der letzten Zwischenversion:

- DeleteIfUnmatched
- DeleteOnError

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 10 Mai 2016, 21:17:26
hallo stefan,

1. getXdeleteIfUnmatched: ich habe nun endlich mal das neue getXdeleteIfUnmatched testen können. im prinzip funktioniert es wohl bestens. aber leider überlebt es keinen fhem restart. getestet habe ich immer mit reread und geänderter regex, womit ich entweder 11 oder 15 readings bekomme. vor restart waren es 15 readings und nach restart mit geänderter regex wurden die ersten 11 readings erneuert und die weiteren 4 "alten" readings sind erhalten geblieben. kann dieses verhalten noch verbessert werden?

2. getXPoll: um machmal ein oder mehrere gets aus einem sammel-request zu entfernen wollte ich getXPoll=0 nutzen. das zeigt zumindestens mit reread keine wirkung. erst wenn ich die jeweiligen poll attribute lösche, werden die entsprechenden gets beim sammel-request unterdrückt/ausgelassen.
ist das so beabsichtigt?
gibt es eigentlich auch eine möglichkeit nach dem "abwählen" eines einzelnen gets, die bereits entstandenen readings des korrespondierenden gets zu löschen? getXDeleteIfUnmatched reagiert zumindestens nicht darauf.

3. zyklische requests: ist es richtig, dass der automatische zyklus der requests, die nur aus getX-definitionen bestehen, erst durch "set start" aktiviert wird? in der def steht zb "none 86400". bei definition mit readingXName wurde der zyklus, meine ich, bereits durch die definition selbst aktiviert. allerdings steht dort auch die url in der def.

4. alignTime scheint gut zu funktionieren. zumindestens wird im internal von triggertime immer der korrekte zeitpunkt gesetzt.

5. getXDeleteOnError muss ich noch testen.
edit: getxDeleteOnError funktioniert auch grundsätzlich. aber hier gibt es auch die probleme mit fhem restart. readings von vor dem restart werden nicht gelöscht, wurden wohl "vergessen". ausserdem wird leider das reading LAST_REQUEST nicht gesetzt, wenn ein get einen fehler erzeugt. kannst du das eventuell noch ergänzen?

edit2: eigentlich müsste sogar der fehler, oder zumindestens ein hinweis auf einen fehler, in LAST_REQUEST erscheinen (zb "get1:error"), um die möglichkeit zum einsammeln eventueller fehlermeldungen zu haben. um den kompletten ablauf einfach kontrollieren/überwachen zu können, wäre zb ein kombiniertes state (bisher: last_request) reading ideal. ein request mit 4 gets könnte dann zb im reading so aussehen => get1:match => get2:unmatch => get3:error => get4:match. dann müsste man nur ein reading überwachen und könnte ggf nach jedem trigger in den anderen control readings nähere infos einsehen. noch einfacher, zumindestens für den user, wäre es, alle infos direkt im "state"-reading zu haben, nicht nur der hinweis auf error, match oder unmatch.

danke,
gruss frank

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Mai 2016, 20:32:21
Hallo Frank,

vielen Dank für das detaillierte Testen!
Das mit dem Restart hat leider zur Folge, dass ich den Mechanismus nochmal neu implementieren muss. So wie ich es bisher implementiert habe, merkt sich das Modul die relevanten Daten in einem Hash, der natürlich nach einem Restart nicht mehr existiert.
Ich bau das nochmal um und behebe dann auch die anderen Bugs, die Du gefunden hast :-)

In den nächsten Wochen werde ich aber leider noch nicht dazu kommen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 12 Mai 2016, 21:22:26
alles klar, schöne ferien.  8)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 16 Mai 2016, 14:58:22
Zitat von: Vize am 04 Mai 2016, 21:44:31
Dann kann man noch nach Belieben seine Readings auswählen und anpassen...

Sehr genial, vielen Dank. Habe das jetzt erstmal so ohne Readings eingerichtet, bekomme aber diese drei Fehlermeldungen:

2016.05.16 14:54:46 3: SENEC: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 1 (before "(end of string)") at (eval 491) line 1
2016.05.16 14:54:46 3: SENEC: no parsed JSON structure available
2016.05.16 14:54:46 3: SENEC: Read response to update didn't match any Reading


Stimmt das alles so ohne Readings?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 18 Mai 2016, 11:57:56
Hallo ich würde gerne auf dem Webserver meines AVR NET IO auf dem die e2000 Firmware läuft die Pool Pumpe schalten und den Status der Pumpe und des Filters auslesen.
Geht das beides mit httpmod?
Im buffer bekomme ich folgendes
HTTP/1.1 200 OK <html><head><title>E2000-NET-IO</title></head> <body text=white link=white alink=white vlink=white bgcolor=black><font face='Courier New'><h1>E2000-NET-IO</h1> <div style='background:#333;float:left;margin:5px'><a href='p0'>POOL Pum</a></div> <div style='float:left;margin:5px'><a href='p1'>Pool Lic</a></div> <div style='float:left;margin:5px'><a href='p2'>Temperat</a></div> <div style='float:left;margin:5px'><a href='p3'>Garten</a></div> <div style='float:left;margin:5px'><a href='p4'>Carport</a></div> <div style='float:left;margin:5px'><a href='p5'></a></div> <div style='float:left;margin:5px'><a href='s '>Status</a></div><table style='clear:both;width:400px'> <tr><td>Pool Aut</td><td><a href='p0?t000'>Tast</a></td></tr> <tr><td>Pool Man</td><td><a href='p0?t001'>Tast</a></td></tr> <tr><td>Pool M E</td><td>Off</td></tr> <tr><td>Pool P E</td><td>Off</td></tr> <tr><td>Filter</td><td>Off</td></tr> <tr><td>Pumpe AE</td><td>Off</td></tr> </table><p>Created by <a href='http://elektronik2000.de/'>Elektronik2000.de</a></p> <meta http-equiv='refresh' content='3; URL=?'></font></body></html>

Das: Pool Aut</td><td><a href='p0?t000' ist der Taster für die Automatik
Das: Pool Man</td><td><a href='p0?t001' ist der Taster für manuelles einschalten der Pumpe.
Das: Pumpe AE</td><td>On ist der Status für die Automatik
Das: Pool M E</td><td>On ist der Status für den Manuellen Betrieb
Das: Pool P E</td><td>On ist der Status ob die Pumpe läuft
Das: Filter</td><td>Off ist die Meldung das der Filter gespült werden muss
Der direkte http Aufruf zum schalten des Automatik Betriebes sieht so aus: http://192.168.2.90/p0?t000

Hoffe die Infos helfen bei meiner fragestellung.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 18 Mai 2016, 16:13:37
Soweit sogut Status auslesen klappt mit [code(?s).*?Pool A E.*?(Off|On).*?]

Jetzt noch gucken wie ich über httpmod schalten kann
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 18 Mai 2016, 20:48:40
Hallo zusammen,

hatte nach dem post über die Fehlermeldung von Björn (brembs) zwar schon mit ihm per PN diskutiert, aber möchte das hier auch nochmal anführen.
Da er wohl Probleme mit dem login per HTTPMOD auf der mein-senec.de Seite hat, habe ich bei mir testweise mal ein zweites - zu meinem funktionierenden völlig identisches - HTTPMOD-Device angelegt.

Das Kuriose ist nun, dass damit der login und der Datenabruf - wie bei brembs - nicht funktioniert...
Mein erstes HTTPMOD-Device funktioniert dagegen tadellos. Hab's hundert Mal geprüft...die devices sind komplett identisch.
Dann habe ich mal ein weiteres HTTPMOD-Device mit meinen funktionierenden login-Daten auf eine andere Unterseite des Portals angelegt, und auch hier funktioniert es nicht.

Gibt es dafür irgendeine (logische) Erklärung?

Gruß
Andreas

***Edit***
Im Anhang mal zwei screenshots aus burp von der anderen Unterseite des Portals, an deren Daten ich nicht komme...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 19 Mai 2016, 12:27:40
ZitatGibt es dafür irgendeine (logische) Erklärung?
:) , na hoffentlich.

kann es an den cookies liegen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 19 Mai 2016, 13:02:40
Hallo frank,

wie muss ich das verstehen?

Mein Halb-Wissen:
Das sind doch session-cookies, oder?
Die werden ja dann z.B. nach jedem (Komplett)-Schließen des Browsers neu generiert beim nächsten Aufruf der Seite, oder?

Bei meinem funktionierenden HTTPMOD-Device stehen in den internals aber von Beginn an dieselben cookies, und diese verändern sich auch nicht...z.B. nach einem disable 1 -> disable 0 des devices...

Hast du dazu eventuell eine Lösung, wie ein zweites device dieselbe Seite bzw. die andere Unterseite "anzapfen" kann?

Dank und Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 19 Mai 2016, 14:36:50
ZitatMein Halb-Wissen:
dann weisst du ja schon mehr als ich.  :)
ist halt nur so eine idee, da ja sonst alles identisch sein soll.

ZitatDas sind doch session-cookies, oder?
Die werden ja dann z.B. nach jedem (Komplett)-Schließen des Browsers neu generiert beim nächsten Aufruf der Seite, oder?
vielleicht auch erst mit explizitem logout und/oder dem ablauf des cookies.
manchmal gibt es ja eine option wie "angemeldet bleiben".

ZitatBei meinem funktionierenden HTTPMOD-Device stehen in den internals aber von Beginn an dieselben cookies, und diese verändern sich auch nicht...z.B. nach einem disable 1 -> disable 0 des devices...
da hattest du doch auch enableCookies gesetzt, oder? ich denke, dass sie dann eventuell nach einem restart von fhem erneuert werden, falls sie diesen nicht überleben.

aber, wie gesagt, habe ich mit anmeldungen/cookies noch keine erfahrungen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 19 Mai 2016, 15:20:16
Alles klar, danke dir trotzdem nochmal für deine Hilfe/Anmerkungen...

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 23 Mai 2016, 14:32:18
Hallo,

für alle, die das SENEC-Portal abfragen möchten, bitte die Editierung hier (https://forum.fhem.de/index.php?topic=45176.msg447564#msg447564) beachten...ist mir erst aufgefallen, als das HTTPMOD-Device nach einem Neustart von FHEM keine Daten mehr lieferte...

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 23 Mai 2016, 18:35:57
Hallo,

leider zu früh gefreut, das Ganze funktioniert so nur solange, wie man im Online Portal von SENEC per browser angemeldet ist und die dabei generierten cookies nutzt. Loggt man sich aus dem SENEC-Portal aus, können auch keine Daten mehr per HTTPMOD-Device abgeholt werden.

Was mir auffiel:
Im alten, funktionierenden device waren die Internals "HTTPCookies" und "Httpcookiehash" gefüllt. Dies ist nach dem Neustart von FHEM nun nicht mehr so...

Ich habe leider keine Ahnung mehr, wie ich es damals geschafft habe, diese zu füllen.

Vielleicht weiß ja jemand, woran es liegen könnte bzw. kann mir einen Tipp geben....

Danke schonmal im Voraus!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Mai 2016, 20:23:09
Hallo Andreas,

Nur um ein paar Trivialitäten auszuschließen:
Verwendest Du die neueste Version von HTTPMOD aus diesem Thread oder hast Du inzwischen mal ein fhem update gemacht und damit evt. wieder die alte Version bekommen?

Poste doch bitte nochmal Deine aktuelle Konfiguration als Ausschnitt aus der fhem.cfg

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 23 Mai 2016, 21:13:51
Danke für das alignTime :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 23 Mai 2016, 21:15:18
Hallo Stefan,

nein, kein update zwischendurch gefahren...

Version HTTPMOD:
98_HTTPMOD.pm 11002 2016-03-05 19:39:06Z ststrobel

Auszug aus fhem.cfg
define httpmod_test_2 HTTPMOD https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX 60
attr httpmod_test_2 userattr requestHeader1 sid1Data sid1Header1 sid1Header2 sid1URL
attr httpmod_test_2 disable 0
attr httpmod_test_2 enableCookies 1
attr httpmod_test_2 extractAllJSON 1
attr httpmod_test_2 reAuthRegex {"success":false}
attr httpmod_test_2 requestHeader1 Cookie: ies_sessid=57435509b0fae;; ies_secret=rINdv9i0HwCRRWf3
attr httpmod_test_2 sid1Data {"email":"meine@email.de","password":"geheim"}
attr httpmod_test_2 sid1Header1 Content-Type: application/json
attr httpmod_test_2 sid1Header2 Accept: */*
attr httpmod_test_2 sid1URL https://mein-senec.de/monitoring/json/auth/login.php


Damit kommen aktuell die Daten...bis ich mich im browser aus der Seite wieder auslogge...  :-\

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 23 Mai 2016, 22:01:27
Zitat von: Vize am 04 Mai 2016, 21:44:31
***EDIT***
Folgendes Attribut muss noch unbedingt gesetzt werden, hatte ich irgendwie vergessen:
requestHeader1  Cookie: ies_sessid=<cookie1>; ies_secret=<cookie2>

Die jeweils entsprechende Bezeichnung von <cookieX> kann man mit burp oder den Entwicklertools der browser ermitteln.

***ENDE EDIT***

Also diese request header werden mit jeder Session als response header mit "Set-Cookie" beim login neu gesetzt. Das kann also nicht wirklich funktionieren. So wie ich das verstanden habe, sollte "enableCookies" das machen. Frage ist, warum tut es das nicht?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 23 Mai 2016, 22:24:03
@Stefan & @Vize:

Kann Andreas' Ergebnis 100% reproduzieren. Bekomme genau das gleiche Verhalten. Die Cookies, die mit jeder neuen Session gesetzt werden, kommen irgendwie nicht durch. Wenn man sie von Hand auf die Session setzt, die man gerade im Browser hat, dann geht es natürlich - aber nur solange wie man im Browser eingeloggt ist. Irgendwie müssten also die Cookies in den request header - wie macht man das?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 Mai 2016, 08:31:40
Hallo Andreas,

Bitte probier es doch nochmal mit der Modulversion, die ich zuletzt hier im Forum gepostet habe. Die ist neuer und hat auch einen Fehler beim Cookie-Handling behoben.
Wenn es damit auch nicht klappt, wäre ein Log-Auszug bei verbose 5 hilfreich.
Das requestHeader1 Attribut muss auf jeden Fall raus. Dafür ist enableCookies da.

Gruß
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 24 Mai 2016, 17:42:15
Hallo Stefan,

leider kein Erfolg mit deinem Tipp der neueren Version von HTTPMOD...

Wobei, deine Version aus post #172 zeigt das hier als Version, und das ist älter, als bei der, die ich vorher benutzt habe:
98_HTTPMOD.pm  8282 2015-03-24 20:36:58Z ststrobel

Hier dann noch der Log-Auszug mit verbose 5:
2016.05.24 17:36:55 4: httpmod_test_2: GetUpdate called (update)
2016.05.24 17:36:55 4: httpmod_test_2: update timer modified: will call GetUpdate in 60.0 seconds at 2016-05-24 17:37:55
2016.05.24 17:36:55 5: httpmod_test_2: AddToQueue called, initial send queue length : 0
2016.05.24 17:36:55 5: httpmod_test_2: AddToQueue adds type update to URL https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX, no data, no headers, retry 0
2016.05.24 17:36:55 5: httpmod_test_2: HandleSendQueue called, qlen = 1
2016.05.24 17:36:55 4: httpmod_test_2: HandleSendQueue sends request type update to URL https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX, No Data, No Header,
timeout 2
2016.05.24 17:36:55 4: HttpUtils url=https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX
2016.05.24 17:36:56 4: https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX: HTTP response code 403
2016.05.24 17:36:56 4: HttpUtils https://mein-senec.de/monitoring/json/status/getstatusoverview.php?id=XXX: Got data, length: 1
2016.05.24 17:36:56 5: httpmod_test_2: Read callback: request type was update retry 0,
Header: HTTP/1.1 403 Forbidden
Date: Tue, 24 May 2016 15:36:56 GMT
Server: Apache/2.4.10 (Debian)
Expires: Tue, 24 May 2016 14:36:56 GMT
Content-Length: 1
Content-Type: application/json,
Body:
no error
2016.05.24 17:36:56 5: httpmod_test_2: looking for Cookies in HTTP/1.1 403 Forbidden
Date: Tue, 24 May 2016 15:36:56 GMT
Server: Apache/2.4.10 (Debian)
Expires: Tue, 24 May 2016 14:36:56 GMT
Content-Length: 1
Content-Type: application/json
2016.05.24 17:36:56 3: httpmod_test_2: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 1 (before "(end of string)") at (eval 33460) line 1.

2016.05.24 17:36:56 5: httpmod_test_2: ExtractSid called, context reading, num
2016.05.24 17:36:56 5: httpmod_test_2: CheckAuth is checking buffer with ReAuthRegex {"success":false}
2016.05.24 17:36:56 3: httpmod_test_2: no parsed JSON structure available
2016.05.24 17:36:56 5: httpmod_test_2: Read starts parsing response to update with defined readings:
2016.05.24 17:36:56 3: httpmod_test_2: Read response to update didn't match any Reading
2016.05.24 17:36:56 5: httpmod_test_2: HandleSendQueue called, qlen = 0


Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 Mai 2016, 20:42:09
Hallo Andreas,

Deine ReAuthRegex passt nicht.
Der erste Request wird vom Server mit einem schlichten 403 Forbidden beantwortet.
Deine ReAuthRegex sucht aber nach {"success":false}. Das steht da nicht drin. Folglich wird auch kein Login gestartet.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 24 Mai 2016, 21:38:41
Hallo Stefan,

erstmal danke für die Antwort...aber...

wenn ich mal testweise falsche login-Daten im browser eingebe erhalte ich laut burp Mitschnitt die Antwort im angehängten screenshot...

Müsste ich nach deiner Meinung dann als reAuthRegex 403 Forbidden angeben?

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 25 Mai 2016, 00:48:53
Also wenn ich auf "getstatusoverview" gehe, dann bekomme ich genau diesen 403 error im header und als response einen JSON syntax error (JSON.parse: unexpected end of data). Habe reAuthRegex jetzt bei mir gelöscht, dann passiert aber auch nichts.

Bin mir nicht sicher, was man eingeben soll, dass er auf "login.php" geht, bevor er auf getstatusoverview geht?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 25 Mai 2016, 11:01:53
Guten Morgen,

habe nun einfach mal bei reAuthRegex .* (als "Wildcard") eingetragen und erhalte dann das im log:
2016.05.25 10:58:04 5: httpmod_test_2: CheckAuth is checking buffer with ReAuthRegex .*
2016.05.25 10:58:04 4: httpmod_test_2: CheckAuth decided new authentication required (ReAuthRegex matched: .*)
2016.05.25 10:58:04 4: httpmod_test_2: CheckAuth has no more retries left - did authentication fail?
2016.05.25 10:58:04 3: httpmod_test_2: no parsed JSON structure available
2016.05.25 10:58:04 5: httpmod_test_2: Read starts parsing response to update with defined readings:
2016.05.25 10:58:04 3: httpmod_test_2: Read response to update didn't match any Reading
2016.05.25 10:58:04 5: httpmod_test_2: HandleSendQueue called, qlen = 0


Kann man daraus was ableiten, was uns weiterbringen könnte?

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 25 Mai 2016, 11:40:46
Man sollte auch aufpassen, was man alles so klickt in FHEM...  ::)

Na ja, jedenfalls funktioniert es nun wieder...

Hatte aus Versehen das Atrribut sid1Data gelöscht  :-[

Mit der "Wildcard" in reAuthRegex funktioniert es dann auch...vielleicht weiß jemand ja auch eine bessere Regex dafür...

@brembs
Björn, kannst du das mal nachstellen, ob es so bei dir auch funktioniert...

Hier nochmal alle Attribute für das HTTPMOD-Device:
enableCookies 1
extractAllJSON 1
reAuthRegex .*
sid1Data   {"email":"meine@email.de","password":"geheim"}
sid1Header1 Content-Type: application/json
sid1Header2 Accept: */*
sid1URL    https://mein-senec.de/monitoring/json/auth/login.php
timeout    20
userattr   sid1Data sid1Header1 sid1Header2 sid1URL


Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Mai 2016, 17:27:35
Hallo  Andreas und brembs,

Das mit der ReAuthRegex ist folgendermaßen gedacht:
HTTPMOD fragt zunächst die URL für die Daten ab.
Dann versucht es die ReAuthRegex zu matchen. Wenn die passt, schließt HTTPMOD daraus, dass eine neue Authentisierung nötig ist, da z.B. Die Session nicht mehr gültig ist oder noch gar keine Session erstellt wurde. Dann werden die sid-Attribute zum Einloggen verwendet.
Danach wird wieder versucht, die ReAuthRegex zu matchen (bis zu einem Maximum an Retries). Wenn die Regex wieder matcht, dann geht HTTPMOD davon aus, dass das Login nicht funktioniert hat.

In Eurem Fall würde ich als ReAuthRegex sowohl das 403 Forbidden also auch das "success":false kombinieren, z.B.

attr httpmod_test_2 reAuthRegex {"success":false}|Forbidden


Eine ReAuthRegex als .* führt dazu, dass HTTPMOD sich bei jedem Request mehrfach anmeldet. Das ist nicht unbedingt erstrebenswert ...

Gruß
    Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 25 Mai 2016, 18:34:28
Hi Stefan,

danke für die Erläuterungen!

Ein
attr httpmod_test_2 reAuthRegex {"success":false}|Forbidden
funktioniert hier leider nicht, und ich erhalte damit weiterhin ein "Forbidden" und somit keine Daten...

Wie könnte man denn wohl herausfinden, auf was die ReAuthRegex matchen soll, um das .* zu vermeiden?

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Mai 2016, 21:27:17
Hallo Andreas,

Zum Testen von Regexes gibt es hübsche online Regex-Tester.
Im konkreten Fall nützt Dir das aber leider nichts, da ich gerade einen Fehler in der aktuellen Version von HTTPMOD entdeckt habe. Beim Matchen der ReAuthRegex wird momentan nur der HTTP-Body verwendet und nicht die Header.
Leider kann ich Dir auch gerade keine reparierte Version anhängen. Wenn Du es selbst machen möchtest, dann musst Du im Code den Aufruf von HTTPMOD_CheckAuth suchen und dort $body durch $buffer ersetzen. Dann sollte klappen.
Nächste Woche kann ich dann eine neue Version bereitstellen. Du kannst vielleicht so lange auch mit .* leben und bei jedem Aufruf zwei Logins durchführen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 25 Mai 2016, 22:37:38
Spitzenklasse! Funktioniert! Ganz hervorragende Arbeit, Andreas, vielen Dank!

Besonderen Dank auch an Dich Stefan, natürlich nicht nur für Deine konkrete Hilfe hier, sondern insbesondere für Dein Modul!
Ausgezeichnet!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 25 Mai 2016, 22:49:10
@Andreas,

leider ist auf getstatusoverview der Batteriestatus nicht zu sehen. Das müsste man/ich dann später noch nachholen...
Aber sonst ist alles bestens ab zu lesen, bin sehr begeistert :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 26 Mai 2016, 13:32:32
@Stefan
Kein Problem, kann natürlich warten - oder selber mal nachsehen...danke dir nochmal für deine Mühe und Hilfe!!!

@brembs
Ja, den Akkustand gibt es auf einer ander (Unter)Seite im Portal. Hab mir dafür einfach ein zweites HTTPMOD-Device angelegt...

DEF
https://mein-senec.de/monitoring/json/status/getaccustate.php 300

Attribute
enableCookies 1
reAuthRegex .*
reading01JSON fuelgauge
reading01Name Akku-Füllstand
sid1Data   {"email":"meine@email.de","password":"geheim"}
sid1Header1 Content-Type: application/json
sid1Header2 Accept: */*
sid1URL    https://mein-senec.de/monitoring/json/auth/login.php
stateFormat { sprintf("%.2f %%",ReadingsVal($name,"Akku-Füllstand",0)) }
timeout    20


Sieht dann so, wie im Anhang aus...

Off-Topic:
Kurioserweise sehe ich im buf dieses devices nicht meinen Namen etc. unter den id-Daten, sondern einen ganz anderen Namen?!?  :o
Wie sieht das bei dir aus, Björn?

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 26 Mai 2016, 14:50:58
Alles funzt perfekt,tausend Dank! Bin so begeistert!

Hmm, bei mir steht mein Name- aber ich war schon einmal mit dem Browser vor Ort und habe in einem der JSON Dateien einen völlig anderen Namen gelesen ... :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: buennerbernd am 26 Mai 2016, 22:27:07
Ich benutze HTTPMOD mit extractAllJSON.
Klappt ja super einfach, nur habe ich ein Problem mit Umlauten.
Im buf steht noch alles richtig: z.B. "bewölkt",
aber im erzeugten Reading steht dann "bew�lkt".


httpheader: HTTP/1.0 200 OK Access-Control-Allow-Origin: * Content-Language: de-DE Content-Type: application/json;charset=UTF-8 X-EdgeConnect-MidMile-RTT: 4 X-EdgeConnect-Origin-MEX-Latency: 45 X-EdgeConnect-MidMile-RTT: 29 X-EdgeConnect-Origin-MEX-Latency: 45 Cache-Control: public, max-age=599, s-maxage=599 Expires: Thu, 26 May 2016 19:46:43 GMT Date: Thu, 26 May 2016 19:36:44 GMT Content-Length: 18276 Connection: close


Ist da noch Optimierungspotential im Modul oder muss ich noch etwas tun?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 27 Mai 2016, 10:52:05
Guten Morgen,

nachdem die Abfrage des SENEC Online-Portales nun so schön klappt - danke noch mal an Stefan und Björn für die tatkräftige Unterstützung - habe ich nun noch zwei Detailfragen:

1.
Der Akku-Füllstand wird per HTTPMOD hier abgeholt:
https://mein-senec.de/monitoring/json/status/getaccustate.php

Nun wird dadurch der buffer im device aber mit ganz, ganz vielen Werten "überschwemmt", die ich nicht verwerte.
HTTP/1.1 200 OK Date: Fri, 27 May 2016 08:36:14 GMT Server: Apache/2.4.10 (Debian) Expires: Fri, 27 May 2016 07:36:14 GMT Connection: close Content-Type: application/json
{"batterycurrent":"10","batteryvoltage":"52.5","fuelgauge":"96.77","capacity":100,"bars":"5","lastupdated":1464337947,
"client_id":"XXX","client_firstname":"XXX","client_lastname":"XXX","client_email":"XXX",
"val":[[[1464251851000,51.8],[1464252152000,51.6],[1464252450000,51.4],[1464252752000,51.8],
[1464253050000,51.8],[1464253350000,51.5],[1464253650000,51.5],[1464253952000,52],
[1464254251000,51.8],[1464254550000,51.8],[1464254851000,51.8],[1464255151000,51.8]
usw...usw...

Mich interessiert aber nur der Wert von "fuelgauge".

Ist es möglich, schon per Definition des devices, diese Abfrage einzuschränken? Wenn ja, wie?

2.
Um an die Daten zu kommen, ist ein login auf der Seite nötig.
Nun stehen dafür die Zugangsdaten aber im Klartext in den Attributen des Devices.
sid1Data {"email":"meine@email.de","password":"geheim"}

In der commandref habe ich gelesen, dass es wohl per storeKeyValue möglich ist, diese zu "verschleiern".
Leider habe ich aber nicht verstanden, wie das genau geht, bzw. ob das für meinen konkreten Fall möglich ist.
Ich verstehe es so, dass es nur möglich ist, wenn man die Zugangsdaten per Url mitschickt...?

Vielleicht kann jemand weiterhelfen?

Vielen Dank schonmal für jegliche Hilfe!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 27 Mai 2016, 11:00:29
Hallo buennerbernd,

zeigt doch mal den kompletten buffer, ich seh in deinem code-Schnippel nix von "bewölkt"...

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: buennerbernd am 27 Mai 2016, 13:37:58
Zitat von: Vize am 27 Mai 2016, 11:00:29
Hallo buennerbernd,

zeigt doch mal den kompletten buffer, ich seh in deinem code-Schnippel nix von "bewölkt"...

Gruß
Andreas

Der Buffer:


HTTP/1.0 200 OK Access-Control-Allow-Origin: * Content-Language: de-DE Content-Type: application/json;charset=UTF-8 X-EdgeConnect-MidMile-RTT: 6 X-EdgeConnect-Origin-MEX-Latency: 42 X-EdgeConnect-MidMile-RTT: 13 X-EdgeConnect-Origin-MEX-Latency: 42 X-EdgeConnect-MidMile-RTT: 8 X-EdgeConnect-Origin-MEX-Latency: 42 Cache-Control: public, max-age=275, s-maxage=599 Expires: Thu, 26 May 2016 20:49:42 GMT Date: Thu, 26 May 2016 20:45:07 GMT Content-Length: 18238 Connection: close {"metadata":{"language":"de-DE","transaction_id":"1464295207701:2094721218","version":"1","latitude":52.55,"longitude":13.08,"units":"m","expire_time_gmt":1464295807,"status_code":200},"forecasts":[{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464295500,"fcst_valid_local":"2016-05-26T22:45:00+0200","num":1,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Donnerstag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":6,"wdir":298,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":37,"vis":16.0,"mslp":1016.53,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464296400,"fcst_valid_local":"2016-05-26T23:00:00+0200","num":2,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Donnerstag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":92,"wspd":6,"wdir":297,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":47,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464297300,"fcst_valid_local":"2016-05-26T23:15:00+0200","num":3,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Donnerstag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":5,"wdir":298,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":46,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464298200,"fcst_valid_local":"2016-05-26T23:30:00+0200","num":4,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Donnerstag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":5,"wdir":298,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":45,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464299100,"fcst_valid_local":"2016-05-26T23:45:00+0200","num":5,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Donnerstag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":94,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":43,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464300000,"fcst_valid_local":"2016-05-27T00:00:00+0200","num":6,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":95,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":42,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464300900,"fcst_valid_local":"2016-05-27T00:15:00+0200","num":7,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":95,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":40,"vis":16.0,"mslp":1016.61,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464301800,"fcst_valid_local":"2016-05-27T00:30:00+0200","num":8,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":95,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":37,"vis":16.0,"mslp":1016.61,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464302700,"fcst_valid_local":"2016-05-27T00:45:00+0200","num":9,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1650","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":95,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":35,"vis":16.0,"mslp":1016.62,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464303600,"fcst_valid_local":"2016-05-27T01:00:00+0200","num":10,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1650","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":95,"wspd":5,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":32,"vis":16.0,"mslp":1016.62,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464304500,"fcst_valid_local":"2016-05-27T01:15:00+0200","num":11,"day_ind":"N","temp":13,"dewpt":12,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":5,"wdir":300,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":37,"vis":16.0,"mslp":1016.62,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464305400,"fcst_valid_local":"2016-05-27T01:30:00+0200","num":12,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":4,"wdir":300,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":42,"vis":16.0,"mslp":1016.61,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464306300,"fcst_valid_local":"2016-05-27T01:45:00+0200","num":13,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":89,"wspd":4,"wdir":301,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":47,"vis":16.0,"mslp":1016.61,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464307200,"fcst_valid_local":"2016-05-27T02:00:00+0200","num":14,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":88,"wspd":4,"wdir":302,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":52,"vis":16.0,"mslp":1016.6,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464308100,"fcst_valid_local":"2016-05-27T02:15:00+0200","num":15,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":88,"wspd":4,"wdir":300,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":53,"vis":16.0,"mslp":1016.63,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464309000,"fcst_valid_local":"2016-05-27T02:30:00+0200","num":16,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1600","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":89,"wspd":4,"wdir":299,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":54,"vis":16.0,"mslp":1016.65,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464309900,"fcst_valid_local":"2016-05-27T02:45:00+0200","num":17,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1650","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":90,"wspd":4,"wdir":297,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":55,"vis":16.0,"mslp":1016.68,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464310800,"fcst_valid_local":"2016-05-27T03:00:00+0200","num":18,"day_ind":"N","temp":13,"dewpt":11,"hi":13,"wc":13,"feels_like":13,"icon_extd":2900,"wxman":"wx1650","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":4,"wdir":295,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":56,"vis":16.0,"mslp":1016.7,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464311700,"fcst_valid_local":"2016-05-27T03:15:00+0200","num":19,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2900,"wxman":"wx1650","icon_code":29,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Wolkig","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":4,"wdir":292,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":59,"vis":16.0,"mslp":1016.7,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464312600,"fcst_valid_local":"2016-05-27T03:30:00+0200","num":20,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":0,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":92,"wspd":4,"wdir":289,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":63,"vis":16.0,"mslp":1016.7,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464313500,"fcst_valid_local":"2016-05-27T03:45:00+0200","num":21,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":1,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":4,"wdir":286,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":67,"vis":16.0,"mslp":1016.7,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464314400,"fcst_valid_local":"2016-05-27T04:00:00+0200","num":22,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":1,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":4,"wdir":283,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":71,"vis":16.0,"mslp":1016.7,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464315300,"fcst_valid_local":"2016-05-27T04:15:00+0200","num":23,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":2,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":93,"wspd":4,"wdir":282,"wdir_cardinal":"WNW","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":72,"vis":16.0,"mslp":1016.68,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464316200,"fcst_valid_local":"2016-05-27T04:30:00+0200","num":24,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":2,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":92,"wspd":4,"wdir":281,"wdir_cardinal":"W","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":73,"vis":16.0,"mslp":1016.65,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464317100,"fcst_valid_local":"2016-05-27T04:45:00+0200","num":25,"day_ind":"N","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2700,"wxman":"wx1250","icon_code":27,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":3,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":92,"wspd":4,"wdir":280,"wdir_cardinal":"W","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":74,"vis":16.0,"mslp":1016.63,"uv_index_raw":0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464318000,"fcst_valid_local":"2016-05-27T05:00:00+0200","num":26,"day_ind":"D","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2800,"wxman":"wx1250","icon_code":28,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":3,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":4,"wdir":279,"wdir_cardinal":"W","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":75,"vis":16.0,"mslp":1016.6,"uv_index_raw":0.0,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464318900,"fcst_valid_local":"2016-05-27T05:15:00+0200","num":27,"day_ind":"D","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2800,"wxman":"wx1250","icon_code":28,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":3,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":91,"wspd":4,"wdir":280,"wdir_cardinal":"W","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":77,"vis":16.0,"mslp":1016.65,"uv_index_raw":0.05,"uv_warning":0,"severity":1},{"class":"fod_short_range_fifteen_minute","expire_time_gmt":1464295807,"fcst_valid":1464319800,"fcst_valid_local":"2016-05-27T05:30:00+0200","num":28,"day_ind":"D","temp":12,"dewpt":11,"hi":12,"wc":12,"feels_like":12,"icon_extd":2800,"wxman":"wx1250","icon_code":28,"dow":"Freitag","phrase_12char":"","phrase_22char":"","phrase_32char":"Stark bewölkt","subphrase_pt1":"","subphrase_pt2":"","subphrase_pt3":"","pop":3,"precip_type":"rain","precip_rate":0.0,"snow_rate":0.0,"rh":90,"wspd":3,"wdir":282,"wdir_cardinal":"W","uv_desc":"Niedrig","uv_index":0,"gust":null,"clds":78,"vis":16.0,"mslp":1016.7,"uv_index_raw":0.04,"uv_warning":0,"severity":1}]}


In den Readings steht dann z.B.


forecasts_16_phrase_32char Stark bew�lkt


Die FHEM-Seite wird scheinbar in UTF-8 gerendert:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head root="/fhem">
<title>Home, Sweet Home</title>
<link rel="shortcut icon" href="/fhem/icons/favicon" />
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
...


Ich denke, dass die Readings einmal zu viel convertiert werden.

Gruß, buennerbernd.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Mai 2016, 14:07:56
Hallo Buennerbernd,

HTTPMOD macht ohne entsprechende Attribute keine Zeichensatzkonvertierung.
Du kannst das aber mit den Encode- und Decode- Attributen steuern.
Diskussionen dazu findest Du auch im Forum.

Edit: für ExtractAllJSON gibt es jedoch noch kein Encode und Decode. Das steht noch auf der Wunschliste. Du müsstest daher für die relevanten Readings einzelne Definitionen machen und dabei dann Decode und Encode angeben.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Mai 2016, 14:16:02
Hallo Andreas,

StoreKeyValue mit Replacements hatte ich am 15.2. in diesem Thread beschrieben.
Das geht für URLs, Header und Daten gleichermaßen.

Gruß
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: buennerbernd am 27 Mai 2016, 15:24:57
Zitat von: StefanStrobel am 27 Mai 2016, 14:07:56
Hallo Buennerbernd,

HTTPMOD macht ohne entsprechende Attribute keine Zeichensatzkonvertierung.
Du kannst das aber mit den Encode- und Decode- Attributen steuern.
Diskussionen dazu findest Du auch im Forum.

Edit: für ExtractAllJSON gibt es jedoch noch kein Encode und Decode. Das steht noch auf der Wunschliste. Du müsstest daher für die relevanten Readings einzelne Definitionen machen und dabei dann Decode und Encode angeben.

Gruß
    Stefan

Danke für die Antwort. Ich verstehe jedoch nicht, warum überhaupt konvertiert werden muss. Die Daten kommen als UTF-8 per JSON. Die FHEM-Seite wird als UTF-8 gerendert. Im Buffer kümmert sich auch keiner um die Konvertierung und der Buffer sieht in FHEM gut aus. Nur in den Readings sind die Daten kaputt.
Ich vermute, beim Zuweisen der Readings wird im Hintergrund schon einmal zu viel konvertiert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 27 Mai 2016, 19:25:03
Zitat von: StefanStrobel am 27 Mai 2016, 14:16:02
Hallo Andreas,

StoreKeyValue mit Replacements hatte ich am 15.2. in diesem Thread beschrieben.
Das geht für URLs, Header und Daten gleichermaßen.

Gruß
   Stefan

Hallo Stefan,

danke dir für die Auskunft, werde ich mal testen...
Kann ich damit eigentlich mehrere "keys" in einem device generieren, also z.B. einmal für das eigentliche Passwort - wie in deinem post vom 15.02. - und dann nochmal für den Benutzernamen?
Also zusätzlich
set <device> storeKeyValue user meine@email.de

Wo werden die denn dann im Sytem abgelegt?

Ach ja, und hast du eventuell auch noch einen Tipp zum Beschränken der Abfrageparameter, damit der buffer etwas "schlanker" wird?

So, jetzt hab ich aber erstmal genug genervt...

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 27 Mai 2016, 21:31:55
Hallo nochmal Stefan,

wollte gerade mal versuchen, deinen Vorschlag mit den Replacements umzusetzen, aber ich scheitere schon zu Beginn...

Hiermit
attr <httpmod_device> replacement1Mode key
erhalte ich folgende "Fehlerausgabe"
unknown attribute replacement1Mode. Type 'attr httpmod_senec_online ?' for a detailed list.

Eine Änderung von replacement1Mode zu replacement01Mode bringt keine Besserung...

Was mache ich falsch?

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Mai 2016, 18:57:40
Hallo Andreas,

Für Deine Fehlermeldung bei replacement1Mode habe ich jetzt auch keine Erklärung.
Was kommt denn bei attr HTTPMODDevice ?
Da sollte replacement[0-9]+Mode dabei sein.

bei setKeyValue kannst Du natürlich mehrere Keys verwenden.
Gespeichert wird in $attr{global}{modpath}."/FHEM/FhemUtils/uniqueID"
Alle Details findest Du im Code in der Funktion setKeyValue von fhem.pl.
HTTPMOD ruft die Funktion nur auf.

Für das Begrenzen der Antworten von Deinem Server habe ich auch keine Ideen.
Das hängt vom Server ab. Vielleicht bietet der ja noch eine andere Auswahl von Werten unter einer anderen URL oder mit anderen Parametern. Ich kenne den aber nicht.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 Mai 2016, 11:37:22
Hallo Stefan,

vielen Dank nachmals für deine Erläuterungen.

Wenn ich attr <httpmod_device> ? absetze, ist replacement[0-9]+Mode key dabei, das ist ja das seltsame...
replacement01Regex und replacement01Value sowie set storeKeyValue funktionieren einwandfrei.
Oder könnte es daran liegen, dass ich seit Längerem kein "System-Update" mehr gemacht habe und die fhem.pl ziemlich alt ist?

Na ja, gelöst habe ich es jetzt dadurch, dass ich das Attribut - und unter userattr replacemantMode - direkt in die fhem.cfg beim jeweiligen device eingefügt habe. Damit läuft es entsprechend.

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Mai 2016, 17:43:36
Hallo Andreas,

probier doch mal ein Update (danach bitte wieder die neue Version von HTTPMOD einspielen). Es wäre schon interessant, ob das Problem damit behoben ist und nur Fhemweb dazwischen gefunkt hat.

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Mai 2016, 18:24:56
Hallo Nochmal,

hier eine neue Version zum Testen.
DeleteIfUnmatched und DeleteOnError sollten jetzt auch nach einem Restart Readings löschen. Bei ExtractAllReadings kann das aber leider nicht funktionieren, da das Modul nach einem Restart nicht mehr wissen kann, ob Readings tatsächlich per JSON erzeugt wurden, oder z.B. von anderen Hilfsmodulen kommen.
Poll=0 sollte jetzt funktionieren und ReAuthRegex auf Fehlermeldungen im Header ebenso.
LAST_REQUEST wird auch bei Errors gesetzt.
Attribute zur Formatierung / Encode etc. von Readings sollten jetzt auch bei ExtractAllJSON angewendet werden.

Ein paar Funktionen habe ich intern umstrukturiert. Ich hoffe, dass dadurch keine neuen Fehler reingeraten sind.

Gruss
    Stefan

EDIT 2.6.16: abgehängtes Modul entfernt, neue Version in späterem Post
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 Mai 2016, 22:51:58
Zitat von: StefanStrobel am 29 Mai 2016, 17:43:36
Hallo Andreas,

probier doch mal ein Update (danach bitte wieder die neue Version von HTTPMOD einspielen). Es wäre schon interessant, ob das Problem damit behoben ist und nur Fhemweb dazwischen gefunkt hat.

Gruss / Thanx
    Stefan

Hallo Stefan,

lag in der Tat an meiner Uralt-Version von FHEM...nach einem Update funktioniert es wie es soll...

***EDIT***
ZitatReAuthRegex auf Fehlermeldungen im Header ebenso

Kann ich bestätigen...funktioniert... Danke!


Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 30 Mai 2016, 22:10:13
Hallo buennerbernd,

in der neuen Version (hier gepostet) kannst Du per

attr device readingEncode utf8


auch für alle Readings, die im zyklischen Update per extractAllJSON erzeugt werden, die Ausgabe in utf8 erreichen.
Entsprechend würde man bei einem get z.B. get01Encode utf8 angeben, wenn get01ExtractAllJSON spezifiziert wurde.

Beim Parsen per Regex wäre das nicht nötig, da ich keine Zeichensatzkonvertierung ohne Attribut eingebaut habe.

HTTPMOD verwendet aber für das Parsen von JSON und XPath fertige Bibliotheken (z.B. libjson-perl), die offenbar die Eingabedaten konvertieren. Deshalb klappt es bei Dir nicht, obwohl die Ausgangsdaten bereits als utf8 geliefert werden.
Mit obigem Attribut sollte das Problem aber gelöst sein.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 31 Mai 2016, 21:10:21
Zitat von: StefanStrobel am 29 Mai 2016, 18:24:56
Ich hoffe, dass dadurch keine neuen Fehler reingeraten sind.

Mein FHEM ist mal nicht ganz so glücklich beim Anlegen einer neuen Definition.

Gestestet auf einer neuen Installation (erstes Device) - einmal "update" und dann probiert:
2016.05.31 21:43:05 1: reload: Error:Modul 98_HTTPMOD deactivated:
Type of arg 1 to each must be hash (not array dereference) at ./FHEM/98_HTTPMOD.pm line 1386, near "}) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1640.

2016.05.31 21:43:05 0: Type of arg 1 to each must be hash (not array dereference) at ./FHEM/98_HTTPMOD.pm line 1386, near "}) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1640.


Das angehängte probiert: Gleicher fehler, andere Zeile:
2016.05.31 21:06:59 1: reload: Error:Modul 98_HTTPMOD deactivated:
Type of arg 1 to each must be hash (not array dereference) at ./FHEM/98_HTTPMOD.pm line 1533, near "}) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1803.

2016.05.31 21:06:59 0: Type of arg 1 to each must be hash (not array dereference) at ./FHEM/98_HTTPMOD.pm line 1533, near "}) "
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1803.


Definition:
define TST HTTPMOD http://google.com 3600

Viele Grüße,
Uli

Edit: Ich sehe gerade dass das Modul via "update" schon zwei Monate alt ist - das wird es wohl kaum sein...damn, mal sehen ob es perl ist...

Edit 2: Indeed: Perl 5.10.1 geht nix, mit 5.16.0 passt alles. Sorry :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Juni 2016, 20:38:32
Hallo Uli,

ich hab die entsprechende Stelle geändert, so dass sie auch mit einem alten Perl wieder gehen sollte.
Neue Version anbei.

Gruss
    Stefan

EDIT: alte Version entfernt
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 02 Juni 2016, 21:02:18
hallo stefan,

die tests:
getXXAlwaysNum: zufällig gefunden und funktioniert.  :)
getXXPoll 0/1: funktioniert wunderbar.
disable=1 / enableControlSet=1: wegen fehlermeldungen bei einem alten stillgelegten httpmod device bezüglich des veralteten namensschemas für readingName/Regex, wollte ich set upgradeAttributes ausführen. hier gab es dann eine kurze irritation, da enableControlSet nur funktioniert, wenn disable nicht 1 ist. vielleicht wäre dieses verhalten einen hinweis wert oder etwas zu verändern.

deleteIfUnmatched: httpmod meldet jetzt nach restart das reading unter UNMATCHED_READINGS. nur werden die alten readings leider noch nicht gelöscht.

log des reread nach restart:
2016.06.02 20:14:38.261 5: eq4: UpdateHintList called
2016.06.02 20:14:38.264 5: eq4: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg upgradeAttributes:noArg storeKeyValue
2016.06.02 20:14:38.266 5: eq4: UpdateHintList: getlist = fw_link2:noArg fw_link1:noArg
2016.06.02 20:14:46.318 5: eq4: set called with reread
2016.06.02 20:14:46.320 4: eq4: GetUpdate called (reread)
2016.06.02 20:14:46.322 5: eq4: GetUpdate checks if poll required for fw_link1 (1)
2016.06.02 20:14:46.336 1: PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/98_HTTPMOD.pm line 1484.
2016.06.02 20:14:46.339 3: stacktrace:
2016.06.02 20:14:46.341 3:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1484)
2016.06.02 20:14:46.343 3:     main::HTTPMOD_GetUpdate             called by ./FHEM/98_HTTPMOD.pm (1229)
2016.06.02 20:14:46.344 3:     main::HTTPMOD_ControlSet            called by ./FHEM/98_HTTPMOD.pm (1281)
2016.06.02 20:14:46.346 3:     main::HTTPMOD_Set                   called by fhem.pl (3167)
2016.06.02 20:14:46.348 3:     main::CallFn                        called by fhem.pl (1583)
2016.06.02 20:14:46.350 3:     main::DoSet                         called by fhem.pl (1615)
2016.06.02 20:14:46.351 3:     main::CommandSet                    called by fhem.pl (1072)
2016.06.02 20:14:46.353 3:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2238)
2016.06.02 20:14:46.354 3:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (722)
2016.06.02 20:14:46.356 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (454)
2016.06.02 20:14:46.358 3:     main::FW_Read                       called by fhem.pl (3172)
2016.06.02 20:14:46.359 3:     main::CallFn                        called by fhem.pl (659)
2016.06.02 20:14:46.361 4: eq4: GetUpdate will request fw_link1
2016.06.02 20:14:46.365 4: eq4: AddToQueue adds get1, initial queue len: 0
2016.06.02 20:14:46.367 5: eq4: AddToQueue adds type get1 to URL http://www.eq-3.de/ajax/downloads.php, data suchtext=&suche_in=2&downloadart=11, no headers, retry 0
2016.06.02 20:14:46.368 5: eq4: HandleSendQueue called, qlen = 1
2016.06.02 20:14:46.371 4: eq4: HandleSendQueue sends request type get1 to URL http://www.eq-3.de/ajax/downloads.php,
data: suchtext=&suche_in=2&downloadart=11, No Header,
timeout 2
2016.06.02 20:14:46.373 4: HttpUtils url=http://www.eq-3.de/ajax/downloads.php
2016.06.02 20:14:46.383 5: eq4: GetUpdate checks if poll required for fw_link2 (2)
2016.06.02 20:14:46.384 1: PERL WARNING: Use of uninitialized value in addition (+) at ./FHEM/98_HTTPMOD.pm line 1484.
2016.06.02 20:14:46.386 3: stacktrace:
2016.06.02 20:14:46.387 3:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1484)
2016.06.02 20:14:46.389 3:     main::HTTPMOD_GetUpdate             called by ./FHEM/98_HTTPMOD.pm (1229)
2016.06.02 20:14:46.391 3:     main::HTTPMOD_ControlSet            called by ./FHEM/98_HTTPMOD.pm (1281)
2016.06.02 20:14:46.392 3:     main::HTTPMOD_Set                   called by fhem.pl (3167)
2016.06.02 20:14:46.394 3:     main::CallFn                        called by fhem.pl (1583)
2016.06.02 20:14:46.395 3:     main::DoSet                         called by fhem.pl (1615)
2016.06.02 20:14:46.397 3:     main::CommandSet                    called by fhem.pl (1072)
2016.06.02 20:14:46.399 3:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2238)
2016.06.02 20:14:46.400 3:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (722)
2016.06.02 20:14:46.402 3:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (454)
2016.06.02 20:14:46.403 3:     main::FW_Read                       called by fhem.pl (3172)
2016.06.02 20:14:46.405 3:     main::CallFn                        called by fhem.pl (659)
2016.06.02 20:14:46.407 4: eq4: GetUpdate will request fw_link2
2016.06.02 20:14:46.411 4: eq4: AddToQueue adds get2, initial queue len: 0
2016.06.02 20:14:46.412 5: eq4: AddToQueue adds type get2 to URL https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release, no data, no headers, retry 0
2016.06.02 20:14:46.415 5: eq4: HandleSendQueue called, qlen = 1
2016.06.02 20:14:46.418 5: eq4: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.02 20:14:46.684 4: http://www.eq-3.de/ajax/downloads.php: HTTP response code 200
2016.06.02 20:14:46.686 4: HttpUtils http://www.eq-3.de/ajax/downloads.php: Got data, length: 15036
2016.06.02 20:14:46.690 4: eq4: Read callback: request type was get1 retry 0,
Header: HTTP/1.1 200 OK
Date: Thu, 02 Jun 2016 18:14:46 GMT
Server: Apache/2.4.6 (Red Hat Enterprise Linux) OpenSSL/1.0.1e-fips mod_fcgid/2.3.9
X-Powered-By: PHP/5.6.5
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: PHPSESSID=t0sompo2sppuj5voj81ifd81k4; path=/
Connection: close
Content-Type: text/html; charset=UTF-8,
Body: <p class="anzahl">19 Ergebnisse gefunden.</p> <div class="row head">

no error
2016.06.02 20:14:46.698 5: eq4: ExtractSid called, context get, num 1
2016.06.02 20:14:46.704 4: eq4: CheckAuth decided no authentication required
2016.06.02 20:14:46.707 5: eq4: ExtractReading fw_link1 with regex /<a.href="(\/Downloads\/Software\/Firmware\/.*?\.(?:tgz|tar\.gz))/g ...
2016.06.02 20:14:46.711 5: eq4: ExtractReading fw_link1 did not match
2016.06.02 20:14:46.713 5: eq4: UpdateReadingList created list of reading.* nums to parse during getUpdate as
2016.06.02 20:14:46.719 3: eq4: Read response to get1 didn't match any Reading
2016.06.02 20:14:46.882 5: eq4: UpdateRequestHash called
2016.06.02 20:14:46.890 5: eq4: HandleSendQueue called, qlen = 1
2016.06.02 20:14:46.894 4: eq4: HandleSendQueue sends request type get2 to URL https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release, No Data, No Header,
timeout 2
2016.06.02 20:14:46.895 4: HttpUtils url=https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release
2016.06.02 20:14:48.350 4: https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release: HTTP response code 200
2016.06.02 20:14:48.352 4: HttpUtils https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release: Got data, length: 42042
2016.06.02 20:14:48.361 4: eq4: Read callback: request type was get2 retry 0,
Header: HTTP/1.1 200 OK
Server: GitHub.com
Date: Thu, 02 Jun 2016 18:14:47 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Status: 200 OK
Cache-Control: no-cache
Vary: X-PJAX
X-UA-Compatible: IE=Edge,chrome=1
Set-Cookie: _octo=GH1.1.1780425522.1464891287; domain=.github.com; path=/; expires=Sat, 02 Jun 2018 18:14:47 -0000
Set-Cookie: logged_in=no; domain=.github.com; path=/; expires=Mon, 02 Jun 2036 18:14:47 -0000; secure; HttpOnly
Set-Cookie: _gh_sess=eyJzZXNzaW9uX2lkIjoiM2E1ZmFmMDBiYzIwM2M1Y2NhYzZhMjFlOGE2MTBmZWEiLCJzcHlfcmVwbyI6ImtjLUdpdEh1Yi9XZXR0ZXJzZW5zb3IiLCJzcHlfcmVwb19hdCI6MTQ2NDg5MTI4NywiX2NzcmZfdG9rZW4iOiJmMXFkejhsMVBma0lNc1NldktQcytVeENHVFdXczFXQ0ErWUJqdERQemx3PSJ9--448ceabf618ed64df6cb5b573facb8e8062c306e; path=/; secure; HttpOnly
X-Request-Id: e4f67404fd710d167751780c95f91676
X-Runtime: 0.048430
Content-Security-Policy: default-src 'none'; base-uri 'self'; block-all-mixed-content; child-src render.githubusercontent.com; connect-src 'self' uploads.github.com status.github.com api.github.com www.google-analytics.com github-cloud.s3.amazonaws.com wss://live.github.com; font-src assets-cdn.github.com; form-action 'self' github.com gist.github.com; frame-ancestors 'none'; frame-src render.githubusercontent.com; img-src 'self' data: assets-cdn.github.com identicons.github.com www.google-analytics.com collector.githubapp.com *.gravatar.com *.wp.com *.githubusercontent.com; media-src 'none'; object-src assets-cdn.github.com; plugin-types application/x-shockwave-flash; script-src assets-cdn.github.com; style-src 'unsafe-inline' assets-cdn.github.com
Strict-Transport-Security: max-age=31536000; includeSubdomains; preload
Public-Key-Pins: max-age=5184000; pin-sha256="WoiWRyIOVNa9ihaBciRSC7XHjliYS9VwUGOIud4PB18="; pin-sha256="RRM1dGqnDFsCJXBTHky16vi1obOlCgFFn/yOhI/y+ho="; pin-sha256="k2v657xBsOVe1PQRwOsHsw3bsGT2VzIqz5K+59sNQws="; pin-sha256="K87oWBWM9UZfyddvDfoxL+8lpNyoUB2ptGtn0fv6G2Q="; pin-sha256="IQBnNBEiFuhj+8x6X8XLgh01V9Ic5/V3IRQLNFFc7v4="; pin-sha256="iie1VXtL7HzAMF+/PVPR9xzT80kQxdZeJ+zduCB3uj0="; pin-sha256="LvRiGEjRqfzurezaWuj8Wie2gyHMrW5Q06LspMnox7A="; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-XSS-Protection: 1; mode=block
Vary: Accept-Encoding
X-Served-By: 926b734ea1992f8ee1f88ab967a93dac
X-GitHub-Request-Id: 50905B68:7A04:FC6A4F5:57507797,
Body:

no error
2016.06.02 20:14:48.387 5: eq4: ExtractSid called, context get, num 2
2016.06.02 20:14:48.393 4: eq4: CheckAuth decided no authentication required
2016.06.02 20:14:48.397 5: eq4: ExtractReading fw_link2 with regex /href="\/kc-GitHub\/Wettersensor\/blob(\/master\/Firmware-Release\/[^.]+\.tgz)"/g ...
2016.06.02 20:14:48.402 5: eq4: 4 capture group(s), matchlist = /master/Firmware-Release/HB-UW-Sen-THPL_update_V0_14_001_150301-I.tgz,/master/Firmware-Release/HB-UW-Sen-THPL_update_V0_14_001_150301-O.tgz,/master/Firmware-Release/HB-UW-Sen-THPL_update_V0_15_000_150303-I.tgz,/master/Firmware-Release/HB-UW-Sen-THPL_update_V0_15_000_150303-O.tgz
2016.06.02 20:14:48.407 5: eq4: FormatReading changed value with Expr ($val=~m/^([^_]+)([^-]+)(-[IO])(.*)$/)?($1.$3.$2.$4):$val from /master/Firmware-Release/HB-UW-Sen-THPL_update_V0_14_001_150301-I.tgz to /master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.408 5: eq4: FormatReading does sprintf with format https://raw.githubusercontent.com/kc-GitHub/Wettersensor%s value is /master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.410 5: eq4: FormatReading sprintf result is https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.411 4: eq4: ExtractReading for get2-1 sets fw_link2-01 to https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.418 5: eq4: FormatReading changed value with Expr ($val=~m/^([^_]+)([^-]+)(-[IO])(.*)$/)?($1.$3.$2.$4):$val from /master/Firmware-Release/HB-UW-Sen-THPL_update_V0_14_001_150301-O.tgz to /master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.419 5: eq4: FormatReading does sprintf with format https://raw.githubusercontent.com/kc-GitHub/Wettersensor%s value is /master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.421 5: eq4: FormatReading sprintf result is https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.422 4: eq4: ExtractReading for get2-2 sets fw_link2-02 to https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_14_001_150301.tgz
2016.06.02 20:14:48.428 5: eq4: FormatReading changed value with Expr ($val=~m/^([^_]+)([^-]+)(-[IO])(.*)$/)?($1.$3.$2.$4):$val from /master/Firmware-Release/HB-UW-Sen-THPL_update_V0_15_000_150303-I.tgz to /master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.430 5: eq4: FormatReading does sprintf with format https://raw.githubusercontent.com/kc-GitHub/Wettersensor%s value is /master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.431 5: eq4: FormatReading sprintf result is https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.433 4: eq4: ExtractReading for get2-3 sets fw_link2-03 to https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-I_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.439 5: eq4: FormatReading changed value with Expr ($val=~m/^([^_]+)([^-]+)(-[IO])(.*)$/)?($1.$3.$2.$4):$val from /master/Firmware-Release/HB-UW-Sen-THPL_update_V0_15_000_150303-O.tgz to /master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.440 5: eq4: FormatReading does sprintf with format https://raw.githubusercontent.com/kc-GitHub/Wettersensor%s value is /master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.442 5: eq4: FormatReading sprintf result is https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.443 4: eq4: ExtractReading for get2-4 sets fw_link2-04 to https://raw.githubusercontent.com/kc-GitHub/Wettersensor/master/Firmware-Release/HB-UW-Sen-THPL-O_update_V0_15_000_150303.tgz
2016.06.02 20:14:48.451 4: eq4: Read response to get2 matched Reading(s) fw_link2-01 fw_link2-02 fw_link2-03 fw_link2-04
2016.06.02 20:14:48.623 5: eq4: DoDeleteIfUnmatched: check reading fw_link2-01 (matched)
2016.06.02 20:14:48.624 5: eq4: DoDeleteIfUnmatched: check reading fw_link2-02 (matched)
2016.06.02 20:14:48.625 5: eq4: DoDeleteIfUnmatched: check reading fw_link2-03 (matched)
2016.06.02 20:14:48.626 5: eq4: DoDeleteIfUnmatched: check reading fw_link2-04 (matched)
2016.06.02 20:14:48.628 5: eq4: HandleSendQueue called, qlen = 0



dann ist mir noch folgendes aufgefallen: jetzt wird mit jedem request das reading LAST_REQUEST 2 mal aktualisiert. die roten einträge sind neu dazu gekommen.
Zitat2016-05-31 16:27:21.766 HTTPMOD eq4 reread
2016-05-31 16:27:22.749 HTTPMOD eq4 LAST_REQUEST: get1
2016-05-31 16:27:22.749 HTTPMOD eq4 MATCHED_READINGS:
2016-05-31 16:27:22.749 HTTPMOD eq4 UNMATCHED_READINGS: fw_link1
2016-05-31 16:27:22.749 HTTPMOD eq4 LAST_REQUEST: get1
2016-05-31 16:27:23.909 HTTPMOD eq4 LAST_REQUEST: get2
2016-05-31 16:27:23.909 HTTPMOD eq4 MATCHED_READINGS: fw_link2-01 fw_link2-02 fw_link2-03 fw_link2-04
2016-05-31 16:27:23.909 HTTPMOD eq4 UNMATCHED_READINGS:
2016-05-31 16:27:23.909 HTTPMOD eq4 LAST_REQUEST: get2

deleteOnError: der test von neulich (die ip erneuern lassen, kurz vorm request) hat nicht mehr funktioniert. ich denke das hat mit einer änderung in httputils zu tun. da muss ich mir was anderes ausdenken.

gruss frank

edit:
deleteOnError: auch hier wird nach restart nicht gelöscht.

die events sehen etwas anders aus, als bei deleteIfUnmatched (jetzt ohne restart zwischendurch).
eventmonitor: zuerst ein 2-facher gültiger request, dann url geändert (rot) wegen fehler, dann die events mit fehlerhafter url. hier fehlt das reread-event und das neue "doppelte" LAST_REQUEST event. die readings wurden aber gelöscht

Zitat2016-06-02 21:24:27.128 HTTPMOD eq4 reread
2016-06-02 21:24:27.611 HTTPMOD eq4 LAST_REQUEST: get1
2016-06-02 21:24:27.611 HTTPMOD eq4 MATCHED_READINGS: fw_link1-01 fw_link1-02 fw_link1-03 fw_link1-04 fw_link1-05 fw_link1-06 fw_link1-07 fw_link1-08 fw_link1-09 fw_link1-10 fw_link1-11 fw_link1-12 fw_link1-13 fw_link1-14 fw_link1-15
2016-06-02 21:24:27.611 HTTPMOD eq4 UNMATCHED_READINGS:
2016-06-02 21:24:27.611 HTTPMOD eq4 LAST_REQUEST: get1
2016-06-02 21:24:29.095 HTTPMOD eq4 LAST_REQUEST: get2
2016-06-02 21:24:29.095 HTTPMOD eq4 MATCHED_READINGS: fw_link2-01 fw_link2-02 fw_link2-03 fw_link2-04
2016-06-02 21:24:29.095 HTTPMOD eq4 UNMATCHED_READINGS:
2016-06-02 21:24:29.095 HTTPMOD eq4 LAST_REQUEST: get2
2016-06-02 21:26:12.840 Global global ATTR eq4 get1URL http://www.eq-4.de/ajax/downloads.php
2016-06-02 21:26:19.328 HTTPMOD eq4 LAST_ERROR: gethostbyname www.eq-4.de failed
2016-06-02 21:26:19.328 HTTPMOD eq4 LAST_REQUEST: get1
2016-06-02 21:26:20.529 HTTPMOD eq4 LAST_REQUEST: get2
2016-06-02 21:26:20.529 HTTPMOD eq4 MATCHED_READINGS: fw_link2-01 fw_link2-02 fw_link2-03 fw_link2-04
2016-06-02 21:26:20.529 HTTPMOD eq4 UNMATCHED_READINGS:
2016-06-02 21:26:20.529 HTTPMOD eq4 LAST_REQUEST: get2
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SirUli am 02 Juni 2016, 22:24:00
Ich hab auch noch einen:
setze enableControlSet = 1 und anschließend ändere die URL in der Definition -> das menü ist weg. Setzt man dann das attribut einmal neu, so geht es wieder.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 02 Juni 2016, 22:55:34
Zitat von: SirUli am 02 Juni 2016, 22:24:00
Ich hab auch noch einen:
setze enableControlSet = 1 und anschließend ändere die URL in der Definition -> das menü ist weg. Setzt man dann das attribut einmal neu, so geht es wieder.
stimmt. ich kenne den mit änderung des intervals.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Juni 2016, 23:15:43
Hallo Frank und Uli,

Habt Ihr das mit der Änderung der Definition mit der letzten Version getestet?
Ich dachte ich hätte diesen Fehler gerade nebenbei behoben ...

Frank, könntest Du mir noch die passende Konfiguration zu Deinem Log schicken?

Vielen Dank
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 03 Juni 2016, 00:06:19
hi stefan,

ZitatHabt Ihr das mit der Änderung der Definition mit der letzten Version getestet?
ich habe die vorletzte version getestet, also nicht die von heute => ModuleVersion 3.2.3 - 29.5.2016

define eq4 HTTPMOD none 604800
attr eq4 userattr dspMode:upd,all get1AlwaysNum get1AutoNumLen get1AutoNumLen:2 get1Data get1DeleteIfUnmatched get1DeleteOnError get1Format get1Name get1Poll:0,1 get1RegOpt get1RegOpt:g get1Regex get1URL get2AlwaysNum get2AutoNumLen get2AutoNumLen:2 get2DeleteIfUnmatched get2DeleteOnError get2Format get2Name get2OExpr get2Poll:0,1 get2RegOpt get2RegOpt:g get2Regex get2URL getDeleteIfUnmatched getDeleteOnError
attr eq4 alignTime 01:48
attr eq4 dspMode all
attr eq4 enableControlSet 1
attr eq4 event-on-change-reading .*
attr eq4 event-on-update-reading LAST_ERROR,LAST_REQUEST,MATCHED_READINGS,UNMATCHED_READINGS
attr eq4 get1AlwaysNum 1
attr eq4 get1AutoNumLen 2
attr eq4 get1Data suchtext=&suche_in=2&downloadart=11
attr eq4 get1DeleteIfUnmatched 1
attr eq4 get1DeleteOnError 1
attr eq4 get1Format http://www.eq-3.de%s
attr eq4 get1Name fw_link1
attr eq4 get1Poll 1
attr eq4 get1RegOpt g
attr eq4 get1Regex <a.href="(Downloads\/Software\/Firmware\/.*?\.(?:tgz|tar\.gz))
attr eq4 get1URL http://www.eq-3.de/ajax/downloads.php
attr eq4 get2AlwaysNum 1
attr eq4 get2AutoNumLen 2
attr eq4 get2DeleteIfUnmatched 1
attr eq4 get2DeleteOnError 1
attr eq4 get2Format https://raw.githubusercontent.com/kc-GitHub/Wettersensor%s
attr eq4 get2Name fw_link2
attr eq4 get2OExpr ($val=~m/^([^_]+)([^-]+)(-[IO])(.*)$/)?($1.$3.$2.$4):$val
attr eq4 get2Poll 1
attr eq4 get2RegOpt g
attr eq4 get2Regex href="\/kc-GitHub\/Wettersensor\/blob(\/master\/Firmware-Release\/[^.]+\.tgz)"
attr eq4 get2URL https://github.com/kc-GitHub/Wettersensor/tree/master/Firmware-Release
attr eq4 room eq4
attr eq4 showError 1
attr eq4 showMatched 1
attr eq4 webCmd reread


gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 14:57:31
Hallo,

ich weiss nicht ob ich hier mit meiner Frage richtig bin, aber ich erhoffe mir hier eher eine Lösung für mein Problem welches ich im Anfängerforum bereits gepostet habe daher hier nur der Link: https://forum.fhem.de/index.php/topic,54178.0.html

Als Ergänzung: Das Problem taucht jetzt heute schon zum zweiten Mal auf:

2016.06.03 14:52:20 3 : 8266_f_Aussen: AddToQueue - send queue too long (21), dropping request (update), BUSY = 1
2016.06.03 14:52:20 3 : 8266_f_Kombi: AddToQueue - send queue too long (21), dropping request (update), BUSY = 1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 18:05:00
Hallo Frank und Uli,

bei DeleteIfUnmatched tappe ich gerade noch im Dunkeln. Mit meinen Testcases klappt es.
Anbei ist eine neue Version, bei der ich etwas mehr logge. Die anderen Kleinigkeiten sollten behoben sein.

Gruss
    Stefan

Edit: Anhang gelöscht
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 18:08:09
Hallo Ernst,

in solchen Fällen hilft ein Ausschnitt aus dem Log bei verbose 5 im HTTPMOD.
Dann sollte man sehen woran es liegt.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 18:22:24
Zitat von: StefanStrobel am 03 Juni 2016, 18:08:09
Hallo Ernst,

in solchen Fällen hilft ein Ausschnitt aus dem Log bei verbose 5 im HTTPMOD.
Dann sollte man sehen woran es liegt.

Gruss
    Stefan

Vielen Dank. global verbose 5 oder nur im device?
Mir ist noch eingefallen dass ich ungefähr seitdem ich diesen Fehler vor ein paar Tagen zum ersten mal hatte, per HTTPMOD den aktuellen Titel der auf wdr2 gespielt wird anzeigen lasse. Da wird unheimlich viel Zeugs in den Buffer geladen, evtl gab es da Konflikte? Ich habe das jetzt erstmal wieder rausgenommen, mal sehen..
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 18:26:34
Hallo Ernst,

verbose 5 nur im Device.
Das erzeugt aber auch ziemlich viele Daten ...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 03 Juni 2016, 21:22:26
Guten Abend,

nach einem Neustart aufgrund eines Systemupdates habe ich gesehen, dass in einem HTTPMOD-Device ein Reading angelegt wird, das ich gar nicht definiert habe.
Es wird auch nur angelegt und danach nicht mehr aktualisiert. Wenn ich es lösche, wird es im laufenden Betrieb auch nicht wieder angelegt...aber bei jedem Neustart.

In den Attributen zum Device finde ich nichts zu diesem Reading. Kann sein, dass ich das Reading mal bei anfänglichen Spielereien angelegt habe, aber, wie gesagt, im Device finde ich dazu keinerlei Hinweise.

Kann man heraus bekommen, warum das Reading angelegt wird? Wenn ja, wie?
Was braucht ihr dazu eventuell an Daten von mir?

Dank und Gruß!
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 21:26:12
Hallo Frank,

ich denke ich habe den Bug bei DeleteOn etc. gefunden.
Anbei schon wieder eine neue Version ...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 21:27:33
Gut. Hier 3 Auszüge aus dem log die, wie ich denke relevant sind.
Beim ersten fällt auf dass qlen immer hochgezählt wird. Das waren gefühlte 1 Millionen Einträge beginnend mit qlen = 1 bis 15. Dann habe ich neu gestartet.


2016.06.03 19:09:50 5: 8266_f_Aussen: HandleSendQueue called, qlen = 7
2016.06.03 19:09:50 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:51 5: 8266_f_Aussen: HandleSendQueue called, qlen = 7
2016.06.03 19:09:51 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:52 5: 8266_f_Aussen: HandleSendQueue called, qlen = 7
2016.06.03 19:09:52 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:53 5: 8266_f_Aussen: HandleSendQueue called, qlen = 7
2016.06.03 19:09:53 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:54 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.03 19:09:54 5: 8266_f_Aussen: internal interval timer set to call GetUpdate again in 180 seconds
2016.06.03 19:09:54 5: 8266_f_Aussen: AddToQueue called, initial send queue length : 7
2016.06.03 19:09:54 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.03 19:09:54 5: 8266_f_Aussen: HandleSendQueue called, qlen = 8
2016.06.03 19:09:54 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:55 5: 8266_f_Aussen: HandleSendQueue called, qlen = 8
2016.06.03 19:09:55 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:56 5: 8266_f_Aussen: HandleSendQueue called, qlen = 8
2016.06.03 19:09:56 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:57 5: 8266_f_Aussen: HandleSendQueue called, qlen = 8
2016.06.03 19:09:57 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 19:09:58 5: 8266_f_Aussen: HandleSendQueue called, qlen = 8
2016.06.03 19:09:58 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue



Hier bein zweiten bahnt sich das Dilemma schon an, keine Verbindung aber noch keine Meldungen wie oben.


2016.06.03 19:33:16 3: 8266_f_Mobile: Read callback: request type was update retry 0, no headers, body empty,
Error: connect to http://192.168.2.118:80 timed out
2016.06.03 19:36:14 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.03 19:36:14 5: 8266_f_Aussen: internal interval timer set to call GetUpdate again in 180 seconds
2016.06.03 19:36:14 5: 8266_f_Aussen: AddToQueue called, initial send queue length : 0
2016.06.03 19:36:14 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.03 19:36:14 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 19:36:14 4: 8266_f_Aussen: HandleSendQueue sends request type update to URL http://192.168.2.110/status, No Data, header 1, timeout 2
2016.06.03 19:36:14 4: HttpUtils url=http://192.168.2.110/status
2016.06.03 19:36:16 3: 8266_f_Aussen: Read callback: request type was update retry 0, no headers, body empty,
Error: connect to http://192.168.2.110:80 timed out
2016.06.03 19:39:14 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.03 19:39:14 5: 8266_f_Aussen: internal interval timer set to call GetUpdate again in 180 seconds
2016.06.03 19:39:14 5: 8266_f_Aussen: AddToQueue called, initial send queue length : 0
2016.06.03 19:39:14 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.03 19:39:14 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 19:39:14 4: 8266_f_Aussen: HandleSendQueue sends request type update to URL http://192.168.2.110/status, No Data, header 1, timeout 2
2016.06.03 19:39:14 4: HttpUtils url=http://192.168.2.110/status



Und schlussendlich so sieht's aus wenn es läuft.
Scheint als ob ich ein Verbindungsproblem im wlan habe. Das kommt schon mal vor, aber bisher hat sich dann alles wieder eingependelt, Fehlermeldungen wie ganz oben wären mir bestimmt aufgefallen. Wie kann ich dem im Falle eines Falles begegnen? Kann ich den Fehler irgendwie abfangen und darauf reagieren? 

2016.06.03 20:22:42 4: http://192.168.2.110/status: HTTP response code 200
2016.06.03 20:22:42 4: HttpUtils http://192.168.2.110/status: Got data, length: 87
2016.06.03 20:22:42 5: 8266_f_Aussen: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 87
Connection: close
Access-Control-Allow-Origin: *,
Body: 8266_f_Aussen --- Status

Anzahl Sensoren : 1

ROM : 402552363516421481   Temp : 20.12
no error
2016.06.03 20:22:42 5: 8266_f_Aussen: Read starts parsing response to update with defined readings: 1
2016.06.03 20:22:42 5: 8266_f_Aussen: ExtractReading temperature with regex /Temp : ([\-\d\.]+)/...
2016.06.03 20:22:42 5: 8266_f_Aussen: 1 capture group(s), matchlist = 20.12
2016.06.03 20:22:42 5: 8266_f_Aussen: ExtractReading for match 1 sets temperature to 20.12
2016.06.03 20:22:42 4: 8266_f_Aussen: Read response to update matched Reading(s) temperature
2016.06.03 20:22:42 5: 8266_f_Aussen: HandleSendQueue called, qlen = 0
2016.06.03 20:22:42 4: http://192.168.2.103/status: HTTP response code 200
2016.06.03 20:22:42 4: HttpUtils http://192.168.2.103/status: Got data, length: 91
2016.06.03 20:22:42 5: 8266_f_Kombi: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 91
Connection: close
Access-Control-Allow-Origin: *,
Body: (ESP_031DED) 8266_f_Kombi --- Status

humidity: 69.20 temperature: 22.50 heat-Index: 22.61
no error
2016.06.03 20:22:42 5: 8266_f_Kombi: Read starts parsing response to update with defined readings: 01,02,03
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading humidity with regex /humidity: ([\-\d\.]+)/...
2016.06.03 20:22:42 5: 8266_f_Kombi: 1 capture group(s), matchlist = 69.20
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading for match 1 sets humidity to 69.20
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading temperature with regex /Index: ([\-\d\.]+)/...
2016.06.03 20:22:42 5: 8266_f_Kombi: 1 capture group(s), matchlist = 22.61
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading for match 1 sets temperature to 22.61
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading heat-index with regex /Index: ([\-\d\.]+)/...
2016.06.03 20:22:42 5: 8266_f_Kombi: 1 capture group(s), matchlist = 22.61
2016.06.03 20:22:42 5: 8266_f_Kombi: ExtractReading for match 1 sets heat-index to 22.61

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 22:08:45
Hallo Ernst,

Die Log-Auszüge sind leider ein bisschen zu kurz um sicher zu sein, aber es scheint fast so als ob Deine Geräte nicht erreichbar sind uns aus irgendeinem Grund die Read-Routine von HTTPMOD keinen Timeout von den HttpUtils bekommt. Bisher konnte sowas nicht vorkommen, aber evt. hat sich da etwas geändert.
In so einem Fall würde HTTPMOD immer weiter auf die Antwort oder den Timeout warten und so lange neue Anfragen immer weiter in die Queue stellen.
Kannst Du mir längere Auszüge zur Verfügung stellen, Deine Konfiguration posten und sicherheitshalber nochmal alles auf den neuesten Stand bringen?

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 22:10:45
Hallo Andras,

Wie sieht das Reading denn aus? Was hat es für einen Zeitstempel? Ändert der sich beim Restart? Wie sieht die Konfiguration aus? was steht im Log?

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 03 Juni 2016, 22:15:12
Hallo Stefan,

schon selber herausgefunden...

Im readingXXName war ein Leerzeichen (Tageserzeugung Watt), daher wurden zwei Readings angelegt, sprich ein zusätzliches mit dem Ausdruck nach dem Leerzeichen im Wert des Readings...  :-[

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 22:16:07
Zitat von: StefanStrobel am 03 Juni 2016, 22:08:45

Kannst Du mir längere Auszüge zur Verfügung stellen, Deine Konfiguration posten und sicherheitshalber nochmal alles auf den neuesten Stand bringen?

Gruß
    Stefan

Hallo Stefan,

klar was auch immer ich beitragen kann mache ich gerne. Längeres Log kein Problem, aber hier würde es wohl den Beitrag sprengen, oder?
Was brauchst du von meiner Konfig? Ein list der beteiligten device? ode die ganze fhem.cfg? Mit auf den neuesten Stand meinst du ein update oder installieren der von dir ein paar Beiträge zuvor angehangenen *.pm
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 22:31:44
ok, hier mal ab restart. Das ganze geht dann ewig so weiter, bis irgendwann qlen = 15 wie zuvor beschrieben. Tja und dann habe ich abgebrochen.


2016.06.03 18:45:02 0: Server shutdown
2016.06.03 18:45:35 1: Including fhem.cfg
2016.06.03 18:45:35 3: telnetPort: port 7072 opened
2016.06.03 18:45:36 3: WEB: port 8083 opened
2016.06.03 18:45:36 3: WEBphone: port 8084 opened
2016.06.03 18:45:36 2: eventTypes: loaded 2493 events from ./log/eventTypes.txt
2016.06.03 18:45:38 3: 8266_f_Aussen: Defined with URL http://192.168.2.110/status and interval 180
2016.06.03 18:45:38 3: 8266_f_Mobile: Defined with URL http://192.168.2.118/status and interval 7200
2016.06.03 18:45:38 3: 8266_f_Kombi: Defined with URL http://192.168.2.103/status and interval 180
2016.06.03 18:45:39 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user ewa
2016.06.03 18:45:39 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1342
2016.06.03 18:45:39 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2016.06.03 18:45:40 1: Including myw.cfg
2016.06.03 18:45:40 3: [Twilight_Bonn] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2016.06.03 18:45:40 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/59_Twilight.pm line 416, <$fh> line 263.
2016.06.03 18:45:40 3: [Twilight_Berlin] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2016.06.03 18:45:40 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/59_Twilight.pm line 416, <$fh> line 266.
2016.06.03 18:45:40 1: PERL WARNING: Constant subroutine main::URL redefined at /usr/share/perl/5.20/constant.pm line 156.
2016.06.03 18:45:40 3: Myduino: IDlist MS 0 1 13 14 15 17 2 22 23 25 3 32 33 35 38 4 6 7
2016.06.03 18:45:40 3: Myduino: IDlist MU 16 20 21 24 26 27 28 29 30 31 34 36 37 39 5 8 9
2016.06.03 18:45:40 3: Myduino: IDlist MC 10 11 12 18
2016.06.03 18:45:40 3: Opening Myduino device /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
2016.06.03 18:45:41 3: Setting Myduino serial parameters to 57600,8,N,1
2016.06.03 18:45:41 3: Myduino device opened
2016.06.03 18:45:41 1: define: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:45:41 1: init: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:45:43 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/00_SIGNALduino.pm line 1720, <$fh> line 371.
2016.06.03 18:45:43 2: CUL_TCM97001 Unknown device CUL_TCM97001_146, please define it
2016.06.03 18:45:46 3: Myduino: Possible commands: ViRtXFSPCG
2016.06.03 18:45:46 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/00_SIGNALduino.pm line 856, <$fh> line 371.
2016.06.03 18:45:46 3: Myduino: Firmwareversion: V 3.2.0-hf1 SIGNALduino - compiled at Mar  4 2016 22:41:08

2016.06.03 18:45:47 1: Including ./log/fhem.save
2016.06.03 18:45:47 1: usb create starting
2016.06.03 18:45:47 3: Probing CUL device /dev/ttyAMA0
2016.06.03 18:45:47 3: Probing TCM_ESP3 device /dev/ttyAMA0
2016.06.03 18:45:48 3: Probing FRM device /dev/ttyAMA0
2016.06.03 18:45:53 1: usb create end
2016.06.03 18:45:53 0: Featurelevel: 5.7
2016.06.03 18:45:53 0: Server started with 86 defined entities (fhem.pl:11545/2016-05-29 perl:5.020002 os:linux user:fhem pid:1342)
2016.06.03 18:45:55 1: PERL WARNING: Use of uninitialized value $originalstart in numeric eq (==) at ./FHEM/57_Calendar.pm line 1277.
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 21.03.16 00:00 Osterferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 04.01.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 01.05.15 00:00 Tag der Arbeit
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:46:08 3: Wetter_Bonn: gethostbyname query.yahooapis.com failed
2016.06.03 18:49:00 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:00 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:01 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:01 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:02 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:02 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:03 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:03 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:04 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:04 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:05 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:05 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:06 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:06 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:07 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:07 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:08 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:08 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:09 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:09 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:10 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:10 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:11 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:11 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:12 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:12 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:13 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:13 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:14 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:14 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:15 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:15 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:16 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:16 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:17 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:17 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:18 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:18 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:19 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:19 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:20 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:20 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:21 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:21 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:22 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:22 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:23 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:23 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:24 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:24 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:25 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:25 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:26 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:26 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:27 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:27 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:28 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:28 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:29 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:29 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:30 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:31 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:31 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:32 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:32 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:33 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:33 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:34 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:34 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:35 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:35 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:36 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:36 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:37 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:37 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:38 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:38 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:39 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:39 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:41 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:41 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:42 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:42 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:43 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:43 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:44 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:44 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:45 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:45 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:46 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:46 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:47 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:47 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:48 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:48 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:49 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:49 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:50 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:50 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:51 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:51 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:52 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:52 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:53 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:53 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:54 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:54 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:55 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:55 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:56 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:56 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:57 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:57 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:58 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:58 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:59 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:59 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:00 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:00 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:01 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:01 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:02 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:02 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:03 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:03 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:04 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:04 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:05 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:05 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:06 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:06 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:07 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:07 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:08 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:08 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:09 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:09 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:10 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:10 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:11 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:11 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:12 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:12 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:13 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:13 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:14 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:14 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:15 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:15 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:16 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:16 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:17 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:17 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:18 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:18 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:19 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:19 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:20 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:20 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:21 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:21 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:22 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:22 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:23 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:23 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:24 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:24 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:25 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:25 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:26 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:26 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:27 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:27 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:28 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:28 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:29 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:29 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:30 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:31 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:31 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:32 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:32 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:33 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:33 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:34 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:34 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:35 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:35 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:36 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:36 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:37 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:37 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:38 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:38 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:39 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:39 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:40 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:40 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:41 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:41 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:43 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:43 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:44 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:44 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:45 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:45 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:46 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:46 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:47 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:47 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:48 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:48 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:49 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:49 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:50 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:50 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:51 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:51 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:52 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:52 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:53 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:53 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:54 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:54 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:55 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:55 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:56 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:56 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:57 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:57 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:58 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:58 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:50:59 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:50:59 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:00 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:00 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:01 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:01 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:02 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:02 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:03 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:03 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:04 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:04 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:05 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:05 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:06 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:06 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:07 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:07 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:08 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:08 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:09 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:09 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:10 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:10 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:11 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:11 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:12 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:12 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:13 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:13 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:14 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:14 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:15 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:15 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:16 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:16 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:17 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:17 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:18 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:18 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:19 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:19 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:20 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:20 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:21 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:21 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
n2016.06.03 18:51:22 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:22 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:23 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:23 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:24 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:24 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:25 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:25 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:26 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:26 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:27 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:27 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:28 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:28 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:29 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:29 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:30 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:31 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:31 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:32 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:32 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:33 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:33 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:34 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:34 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:35 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:35 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:36 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:36 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:37 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:37 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:38 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:38 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:39 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:39 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:40 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:40 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:41 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:41 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:42 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:42 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:43 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:43 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:44 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:44 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:45 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:45 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:46 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:46 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:47 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:47 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:48 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:48 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:49 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:49 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:50 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:50 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:51 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:51 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:52 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:51:52 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:53 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.03 18:51:53 5: 8266_f_Aussen: internal interval timer set to call GetUpdate again in 180 seconds
2016.06.03 18:51:53 5: 8266_f_Aussen: AddToQueue called, initial send queue length : 1
2016.06.03 18:51:53 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.03 18:51:53 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:53 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:54 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:54 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:55 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:55 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:56 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:56 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:57 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:57 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:58 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:58 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:51:59 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:51:59 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:00 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:00 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:01 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:01 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:02 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:02 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:03 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:03 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:04 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:04 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:05 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2
2016.06.03 18:52:05 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:52:06 5: 8266_f_Aussen: HandleSendQueue called, qlen = 2



hier noch ein list:

Internals:
   BUSY       0
   DEF        http://192.168.2.103/status 180
   Interval   180
   LASTSEND   1464985590.12145
   MainURL    http://192.168.2.103/status
   NAME       8266_f_Kombi
   NR         43
   STATE      H: 72.00 % T: 22.68 °C  HI: 22.68 °C
   TRIGGERTIME 1464985770.12028
   TRIGGERTIME_FMT 2016-06-03 22:29:30
   TYPE       HTTPMOD
   addr       http://192.168.2.103:80
   buf        HTTP/1.1 200 OK

Content-Type: text/plain

Content-Length: 91

Connection: close

Access-Control-Allow-Origin: *



(ESP_031DED) 8266_f_Kombi --- Status

humidity: 72.00 temperature: 22.50 heat-Index: 22.68

   code       200
   conn
   data
   displayurl http://192.168.2.103/status
   header     1
   host       192.168.2.103
   httpheader HTTP/1.1 200 OK

Content-Type: text/plain

Content-Length: 91

Connection: close

Access-Control-Allow-Origin: *
   httpversion 1.0
   hu_blocking 0
   hu_filecount 14
   ignoreredirects 0
   loglevel   4
   path       /status
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.2.103/status
   value      0
   Helper:
     Dblog:
       Humidity:
         Logdb:
           TIME       1464985590.63648
           VALUE      72.00
       Temperature:
         Logdb:
           TIME       1464985590.63648
           VALUE      22.68
   QUEUE:
   Readings:
     2016-06-03 22:26:30   heat-index      22.68
     2016-06-03 22:26:30   humidity        72.00
     2016-06-03 22:26:30   humidity_avg_day 69.6
     2016-06-03 22:26:30   humidity_avg_month 64.6
     2016-06-03 22:26:30   humidity_cum_day 5625995.2
     2016-06-03 22:26:30   humidity_cum_month 21979662.5
     2016-06-03 22:20:30   humidity_max_day 72.0
     2016-06-03 22:20:30   humidity_max_month 72.0
     2016-06-03 18:39:29   humidity_min_day 67.9
     2016-06-01 00:02:18   humidity_min_month 60.4
     2016-06-03 22:26:30   temperature     22.68
     2016-06-03 22:26:30   temperature_avg_day 22.3
     2016-06-03 22:26:30   temperature_avg_month 22.2
     2016-06-03 22:26:30   temperature_cum_day 1800407.6
     2016-06-03 22:26:30   temperature_cum_month 7554910.60000001
     2016-06-03 20:52:41   temperature_max_day 22.8
     2016-06-03 20:52:41   temperature_max_month 22.8
     2016-06-03 10:39:31   temperature_min_day 22.0
     2016-06-02 07:37:00   temperature_min_month 21.5
     2016-05-29 14:29:55   warn            0
     2016-06-03 22:26:30   warnmsg         OK
   Request:
     data
     header     1
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.2.103/status
     value      0
   Defptr:
     Readingbase:
       heat-index reading
       humidity   reading
       temperature reading
     Readingnum:
       heat-index 03
       humidity   01
       temperature 02
     Readingoutdated:
     Readingsubnum:
       heat-index
       humidity
       temperature
   Sslargs:
Attributes:
   alias      Schlafzimmer
   reading01Name humidity
   reading01Regex humidity: ([\-\d\.]+)
   reading02Name temperature
   reading02Regex Index: ([\-\d\.]+)
   reading03Name heat-index
   reading03Regex Index: ([\-\d\.]+)
   requestHeader.* 1
   room       system
   stateFormat {sprintf("H: %.2f %% T: %.2f °C  HI: %.2f °C",ReadingsVal($name,"humidity",0),ReadingsVal($name,"temperature",0),ReadingsVal($name,"heat-index",0))}
   userReadings warnmsg { ReadingsVal("heatwarn","state",0);; }
   userattr   event-min-interval event-on-change-reading icon reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading1Name reading1Regex requestData.* requestHeader requestHeader.* stateFormat
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Juni 2016, 23:25:49
Hallo Ernst,

Kann es sein, dass du verbose 5 erst nach dem Start eingetippt hast?
Mir fehlen die Einträge von HTTPMOD zwischen restart und der ersten Handlesendqueue Meldung.
Da müsste erst mal ein erfolgreicher Request gesendet werden und damit die Queue belegen ...
Bitte setze verbose für das Device in der fhem.cfg, so dass es gleich beim Start greift.
In HttpUtils gab es tatsächlich einige Änderungen in den letzten Tagen. Ich vermute, dass es damit zu tun hat und hoffe, dass die Logs hier helfen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 23:37:11
Zitat von: StefanStrobel am 03 Juni 2016, 23:25:49

Kann es sein, dass du verbose 5 erst nach dem Start eingetippt hast?

Möglich, habe soviel gekuckt und gemacht .... Ist mir allerdings auch aufgefallen dass direkt nach dem restart, ohne dass ein httpmod abgesetzt wurde schon eine Fehlermeldung kommt.

Ich kann ja verbose nochmal hochsetzen, dann restart und dann warten. Im Moment läuft's aber gerade problemlos. Ich schaue auch nochmal im log etwas früher.
Und: ich habe jetzt kein update mehr gemacht? (nur weil du meintest von wg neuester Stand?)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 03 Juni 2016, 23:48:47
hier nochmal der log von eben, aber etwas früher einsetzend. Da müsste jetzt alles drin sein



2016.06.03 18:35:56 4: HttpUtils url=http://192.168.2.103/status
2016.06.03 18:35:56 4: http://192.168.2.110/status: HTTP response code 200
2016.06.03 18:35:56 4: HttpUtils http://192.168.2.110/status: Got data, length: 87
2016.06.03 18:35:56 5: 8266_f_Aussen: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 87
Connection: close
Access-Control-Allow-Origin: *,
Body: 8266_f_Aussen --- Status

Anzahl Sensoren : 1

ROM : 402552363516421481   Temp : 21.06
no error
2016.06.03 18:35:56 5: 8266_f_Aussen: Read starts parsing response to update with defined readings: 1
2016.06.03 18:35:56 5: 8266_f_Aussen: ExtractReading temperature with regex /Temp : ([\-\d\.]+)/...
2016.06.03 18:35:56 5: 8266_f_Aussen: 1 capture group(s), matchlist = 21.06
2016.06.03 18:35:56 5: 8266_f_Aussen: ExtractReading for match 1 sets temperature to 21.06
2016.06.03 18:35:56 4: 8266_f_Aussen: Read response to update matched Reading(s) temperature
2016.06.03 18:35:56 5: Triggering 8266_f_Aussen (1 changes)
2016.06.03 18:35:56 5: Starting notify loop for 8266_f_Aussen, first event temperature: 21.06
2016.06.03 18:35:56 5: Notify from Device: 8266_f_Aussen recieved
2016.06.03 18:35:56 5: DbLog: logging of Device: 8266_f_Aussen , Type: HTTPMOD , Event: temperature: 21.06 , Reading: temperature , Value: 21.06 , Unit: °C
2016.06.03 18:35:57 5: myw_Group: not on any display, ignoring notify
2016.06.03 18:35:57 5: 8266_f_Aussen: HandleSendQueue called, qlen = 0
2016.06.03 18:35:57 4: http://192.168.2.103/status: HTTP response code 200
2016.06.03 18:35:57 4: HttpUtils http://192.168.2.103/status: Got data, length: 91
2016.06.03 18:35:57 5: 8266_f_Kombi: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 91
Connection: close
Access-Control-Allow-Origin: *,
Body: (ESP_031DED) 8266_f_Kombi --- Status

humidity: 68.10 temperature: 22.70 heat-Index: 22.69
no error
2016.06.03 18:35:57 5: 8266_f_Kombi: Read starts parsing response to update with defined readings: 01,02,03
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading humidity with regex /humidity: ([\-\d\.]+)/...
2016.06.03 18:35:57 5: 8266_f_Kombi: 1 capture group(s), matchlist = 68.10
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading for match 1 sets humidity to 68.10
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading temperature with regex /Index: ([\-\d\.]+)/...
2016.06.03 18:35:57 5: 8266_f_Kombi: 1 capture group(s), matchlist = 22.69
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading for match 1 sets temperature to 22.69
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading heat-index with regex /Index: ([\-\d\.]+)/...
2016.06.03 18:35:57 5: 8266_f_Kombi: 1 capture group(s), matchlist = 22.69
2016.06.03 18:35:57 5: 8266_f_Kombi: ExtractReading for match 1 sets heat-index to 22.69
2016.06.03 18:35:57 4: 8266_f_Kombi: Read response to update matched Reading(s) humidity temperature heat-index
2016.06.03 18:35:57 5: Triggering 8266_f_Kombi (4 changes)
2016.06.03 18:35:57 5: Starting notify loop for 8266_f_Kombi, first event humidity: 68.10
2016.06.03 18:35:57 5: Notify from Device: 8266_f_Kombi recieved
2016.06.03 18:35:57 5: DbLog: logging of Device: 8266_f_Kombi , Type: HTTPMOD , Event: humidity: 68.10 , Reading: humidity , Value: 68.10 , Unit: %
2016.06.03 18:35:57 5: DbLog: logging of Device: 8266_f_Kombi , Type: HTTPMOD , Event: temperature: 22.69 , Reading: temperature , Value: 22.69 , Unit: °C
2016.06.03 18:35:57 5: myw_Group: not on any display, ignoring notify
2016.06.03 18:35:57 5: 8266_f_Kombi: HandleSendQueue called, qlen = 0
2016.06.03 18:35:57 4: WEB_192.168.2.114_56723 GET /fhem?XHR=1&inform=type=status;filter=;since=1464971584;fmt=JSON&fw_id=362&timestamp=1464971769321; BUFLEN:0
2016.06.03 18:36:02 4: Myduino/msg READ: MS;P1=-3510;P2=555;P3=-2078;P5=-9097;D=2521232321232321232321212321232323232323232121212323232123232323212321232321;CP=2;SP=5;O;
2016.06.03 18:36:02 4: Myduino: Matched MS Protocol id 0 -> weather1
2016.06.03 18:36:02 5: Myduino: Starting demodulation at Position 2
2016.06.03 18:36:02 4: Myduino: Decoded MS Protocol id 0 dmsg s92680E214800 length 40
2016.06.03 18:36:02 5: Myduino: converted Data to (s92680E214800)
2016.06.03 18:36:02 5: Myduino dispatch s92680E214800
2016.06.03 18:36:02 4: CUL_TCM97001 Prologue_146 146 (92680E214800) length: 12
2016.06.03 18:36:02 4: CUL_TCM97001 Parse Name: Prologue_146 , devicecode: CUL_TCM97001_146 , Model defined: Prologue
2016.06.03 18:36:02 4: CUL_TCM97001 using longid: 1 model: Prologue
2016.06.03 18:36:02 4: CUL_TCM97001 temperature Prologue_146 146 T: 22.6 H: 20
2016.06.03 18:36:02 5: Triggering Prologue_146 (2 changes)
2016.06.03 18:36:02 5: Starting notify loop for Prologue_146, first event temperature: 22.6
2016.06.03 18:36:02 5: Notify from Device: Prologue_146 recieved
2016.06.03 18:36:03 4: Myduino/msg READ: MS;P0=-2079;P1=555;P2=-4119;P3=-9090;D=1312101012101012101012121012101010101010101212121010101210101010121012101012;CP=1;SP=3;O;
2016.06.03 18:36:03 4: Myduino: Matched MS Protocol id 0 -> weather1
2016.06.03 18:36:03 5: Myduino: Starting demodulation at Position 2
2016.06.03 18:36:03 4: Myduino: Decoded MS Protocol id 0 dmsg s92680E214800 length 40
2016.06.03 18:36:03 5: Myduino: converted Data to (s92680E214800)
2016.06.03 18:36:03 4: Myduino: Dropped (s92680E214800) due to short time or equal msg
2016.06.03 18:36:07 4: Connection accepted from WEB_192.168.2.110_8156
2016.06.03 18:36:08 4: Connection closed for WEB_192.168.2.110_8156: EOF
2016.06.03 18:36:20 4: Connection accepted from WEB_192.168.2.114_56728
2016.06.03 18:36:20 4: WEB_192.168.2.114_56728 POST /fhem?cmd=style%20edit%20fhem.cfg&save=Save+fhem.cfg&saveName=fhem.cfg&cmd=style+save+fhem.cfg+&data=attr+global+userattr+DbLogExclude+DbLogInclude+cmdIcon+devStateIcon+devStateStyle+fp_Gr+icon+sortby+webCmd+widgetOverride%0D%0Aattr+global+autoload_undefined_devices+1%0D%0Aattr+global+latitude+50.6843646%0D%0Aattr+global+logfile+.%2Flog%2Ffhem-%25Y-%25m.log%0D%0Aattr+global+longitude+7.1666057%0D%0Aattr+global+modpath+.%0D%0Aattr+global+room+system%0D%0Aattr+global+statefile+.%2Flog%2Ffhem.save%0D%0Aattr+global+updateInBackground+1%0D%0Aattr+global+verbose+3%0D%0A%0D%0Adefine+telnetPort+telnet+7072+global%0D%0Aattr+telnetPort+room+system%0D%0Adefine+allowed_telnetPort+allowed%0D%0Aattr+allowed_telnetPort+password+ewa%0D%0Aattr+allowed_telnetPort+room+system%0D%0Aattr+allowed_telnetPort+validFor+telnetPort%0D%0A%0D%0A%23+Password+fuer+Web%0D%0Adefine+WEB+FHEMWEB+8083+global%0D%0Aattr+WEB+JavaScripts+codemirror%2Ffhem_codemirror.js%0D%0Aattr+WEB+column+Wohnung%3AInfo%2CSchalter%2CDummy%2520Schalter%2CFuehler%7CWetter%2520Aktuell%2CWetter%2520Vorschau%0D%0Aattr+WEB+editConfig+1%0D%0Aattr+WEB+room+system%0D%0Aattr+WEB+stylesheetPrefix+dark%0D%0A%23attr+WEB+menuEntries+getW%2Ccmd%3D+%7Bsystem%28%22%2Fopt%2Ffhem%2F.%2Fmyw_get.sh%22%29%7D%2CBerlinUPD%2Ccmd%3Dinclude+Berlin.upd%2CBonnUPD%2Ccmd%3Dinclude+Bonn.upd%0D%0A%23attr+WEB+menuEntries+getW%2Ccmd%3Ddefine+at_myw_get_t+at+%2B*00%3A01%3A00+%7Bsystem%28%22%2Fopt%2Ffhem%2F.%2Fmyw_get.sh%22%29%7D%2CBerlinUPD%2Ccmd%3Dinclude+Berlin.upd%2CBonnUPD%2Ccmd%3Dinclude+Bonn.upd%0D%0Adefine+allowed_WEB+allowed%0D%0Aattr+allowed_WEB+basicAuth+ZXdhOmV3YWJjc2Z0RjEv%0D%0Aattr+allowed_WEB+room+system%0D%0Aattr+allowed_WEB+validFor+WEB%0D%0A%0D%0A%0D%0A%23+Password+fuer+iPhone%0D%0Adefine+WEBphone+FHEMWEB+8084+global%0D%0Aattr+WEBphone+JavaScripts+codemirror%2Ffhem_codemirror.js%0D%0Aattr+WEBphone+room+system%0D%0Aattr+WEBphone+stylesheetPrefix+darksmallscreen%0D%0Adefine+allowed_WEBphone+allowed%0D%0Aattr+allowed_WEBphone+basicAuth+ZXdhOmV3YWJjc2Z0RjEv%0D%0Aattr+allowed_WEBphone+room+system%0D%0Aattr+allowed_WEBphone+validFor+WEBphone%0D%0A%0D%0A%23+Fake+FileLog+entry%2C+to+access+the+fhem+log+from+FHEMWEB%0D%0A%0D%0Adefine+autocreate+autocreate%0D%0Aattr+autocreate+ignoreTypes+IT_0FFF0F0FFF%2CIT_0FFF0FF0FF%2CIT_0FFF00FFFF%2CIT_00FF0FFFFF%2CIT_0FFF00F1FF%2CIT_00FF0FFFFF%0D%0Aattr+autocreate+room+system%0D%0A%0D%0Adefine+eventTypes+eventTypes+.%2Flog%2FeventTypes.txt%0D%0Aattr+eventTypes+room+system%0D%0A%0D%0A%23+Disable+this+to+avoid+looking+for+new+USB+devices+on+startup%0D%0Adefine+initialUsbCheck+notify+global%3AINITIALIZED+usb+create%0D%0Aattr+initialUsbCheck+room+system%0D%0A%0D%0A%23%3F+Fuehler+1-+RPi+Gpio%0D%0A%0D%0Adefine+RPi+GPIO4+BUSMASTER%0D%0Aattr+RPi+room+system%0D%0A%0D%0Adefine+f_Wohn1+GPIO4+28-0415a443f0ff%0D%0Aattr+f_Wohn1+DbLogExclude+failures%2CT%2C85%0D%0Aattr+f_Wohn1+alias+Wohnzimmer%0D%0Aattr+f_Wohn1+event-min-interval+temperature%3A300%0D%0Aattr+f_Wohn1+event-on-change-reading+temperature%0D%0Aattr+f_Wohn1+room+system%0D%0A%23attr+f_Wohn1+userReadings+f_Wohn1.av+%7BmovingAverage%28%22f_Wohn1%22%2C%22temperature%22%2C360%29%7D%0D%0A%0D%0Adefine+f_Aussen+GPIO4+28-0415a4dbf5ff%0D%0Aattr+f_Aussen+DbLogExclude+failures%2CT%2C85%0D%0Aattr+f_Aussen+alias+AF-R-Platz%0D%0Aattr+f_Aussen+event-min-interval+temperature%3A300%0D%0Aattr+f_Aussen+event-on-change-reading+temperature%0D%0Aattr+f_Aussen+room+system%0D%0A%23attr+f_Aussen+userReadings+f_Aussen.av+%7BmovingAverage%28%22f_Aussen%22%2C%22temperature%22%2C360%29%7D%0D%0A%0D%0A%23%3F+Fuehler+2-+ESP8266%0D%0A%0D%0Adefine+8266_f_Aussen+HTTPMOD+http%3A%2F%2F192.168.2.110%2Fstatus+180%0D%0Aattr+8266_f_Aussen+userattr+event-min-interval+event-on-change-reading+icon+reading1Name+reading1Regex+requestData.*+requestHeader+requestHeader.*+stateFormat%0D%0Aattr+8266_f_Aussen+alias+AF-Kueche%0D%0Aattr+8266_f_Aussen+event-min-interval+temperature%3A300%0D%0Aattr+8266_f_Aussen+event-on-change-reading+temperature%0D%0Aattr+8266_f_Aussen+reading1Name+temperature%0D%0Aattr+8266_f_Aussen+reading1Regex+Temp+%3A+%28%5B%5C-%5Cd%5C.%5D%2B%29%0D%0Aattr+8266_f_Aussen+requestHeader.*+1%0D%0Aattr+8266_f_Aussen+room+system%0D%0Aattr+8266_f_Aussen+stateFormat+%7Bsprintf%28%22T%3A+%25.2f+%C2%B0C%22%2C+ReadingsVal%28%24name%2C%22temperature%22%2C0%29%29%7D%0D%0A%0D%0A%0D%0Adefine+8266_f_Mobile+HTTPMOD+http%3A%2F%2F192.168.2.118%2Fstatus+7200%0D%0Aattr+8266_f_Mobile+userattr+event-min-interval+event-on-change-reading+icon+reading01Name+reading01Regex+requestData.*+requestHeader+requestHeader.*+stateFormat%0D%0Aattr+8266_f_Mobile+alias+Mobiler+Fuehler%0D%0Aattr+8266_f_Mobile+event-min-interval+temperature%3A300%0D%0Aattr+8266_f_Mobile+event-on-change-reading+temperature%0D%0Aattr+8266_f_Mobile+reading01Name+temperature%0D%0Aattr+8266_f_Mobile+reading01Regex+Temp+%3A+%28%5B%5C-%5Cd%5C.%5D%2B%29%0D%0Aattr+8266_f_Mobile+requestHeader.*+1%0D%0Aattr+8266_f_Mobile+room+system%0D%0Aattr+8266_f_Mobile+stateFormat+%7Bsprintf%28%22T%3A+%25.2f+%C2%B0C%22%2C+ReadingsVal%28%24name%2C%22temperature%22%2C0%29%29%7D%0D%0A%0D%0Adefine+8266_f_Kombi+HTTPMOD+http%3A%2F%2F192.168.2.103%2Fstatus+180%0D%0Aattr+8266_f_Kombi+userattr+event-min-interval+event-on-change-reading+icon+reading01Name+reading01Regex+reading02Name+reading02Regex+reading03Name+reading03Regex+reading1Name+reading1Regex+requestData.*+requestHeader+requestHeader.*+stateFormat%0D%0Aattr+8266_f_Kombi+alias+Schlafzimmer%0D%0Aattr+8266_f_Kombi+reading01Name+humidity%0D%0Aattr+8266_f_Kombi+reading01Regex+humidity%3A+%28%5B%5C-%5Cd%5C.%5D%2B%29%0D%0Aattr+8266_f_Kombi+reading02Name+temperature%0D%0Aattr+8266_f_Kombi+reading02Regex+Index%3A+%28%5B%5C-%5Cd%5C.%5D%2B%29%0D%0Aattr+8266_f_Kombi+reading03Name+heat-index%0D%0Aattr+8266_f_Kombi+reading03Regex+Index%3A+%28%5B%5C-%5Cd%5C.%5D%2B%29%0D%0Aattr+8266_f_Kombi+requestHeader.*+1%0D%0Aattr+8266_f_Kombi+room+system%0D%0Aattr+8266_f_Kombi+stateFormat+%7Bsprintf%28%22H%3A+%25.2f+%25%25+T%3A+%25.2f+%C2%B0C++HI%3A+%25.2f+%C2%B0C%22%2CReadingsVal%28%24name%2C%22humidity%22%2C0%29%2CReadingsVal%28%24name%2C%22temperature%22%2C0%29%2CReadingsVal%28%24name%2C%22heat-index%22%2C0%29%29%7D%0D%0Aattr+8266_f_Kombi+userReadings+warnmsg+%7B+ReadingsVal%28%22heatwarn%22%2C%22state%22%2C0%29%3B%3B%3B%3B+%7D%0D%0A%23attr+8266_f_Kombi+stateFormat+%7Bsprintf%28%22T%3A+%25.2f+%22%2C+ReadingsVal%28%24name%2C%22temperature%22%2C0%29%29%7D%0D%0A%0D%0A%23%3F+Funksteckdosen%0D%0A%0D%0Adefine+FSD1+GenShellSwitch+%2Fhome%2Fpi%2Fraspberry-remote%2Fsend+10001+1+1+0%0D%0Aattr+FSD1+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+FSD1+devStateIcon+on%3Arc_AUDIO%40red+off%3Ageneral_aus%0D%0Aattr+FSD1+group+Schalter%0D%0Aattr+FSD1+room+system%0D%0A%0D%0Adefine+FSD2+GenShellSwitch+%2Fhome%2Fpi%2Fraspberry-remote%2Fsend+10001+2+1+0%0D%0Aattr+FSD2+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+FSD2+devStateIcon+on%3AFS20.on+off%3Ageneral_aus%0D%0Aattr+FSD2+group+Schalter%0D%0Aattr+FSD2+room+system%0D%0A%0D%0Adefine+FSD3+GenShellSwitch+%2Fhome%2Fpi%2Fraspberry-remote%2Fsend+10001+3+1+0%0D%0Aattr+FSD3+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+FSD3+devStateIcon+on%3Arc_RADIO%40red+off%3Ageneral_aus%0D%0Aattr+FSD3+group+Schalter%0D%0Aattr+FSD3+room+system%0D%0A%0D%0A%23%3F+Logfiles%0D%0Adefine+FileLog_Aussen+FileLog+.%2Flog%2Fmyaf-%25Y-%25m.log+f_Aussen%7C8266_f_Aussen%7C8266_f_Mobile%0D%0Aattr+FileLog_Aussen+group+Log%0D%0Aattr+FileLog_Aussen+logtype+text%0D%0Aattr+FileLog_Aussen+room+system%0D%0A%0D%0Adefine+FileLog_Innen+FileLog+.%2Flog%2Fmyif-%25Y-%25m.log+f_Wohn1%0D%0Aattr+FileLog_Innen+group+Log%0D%0Aattr+FileLog_Innen+logtype+text%0D%0Aattr+FileLog_Innen+room+system%0D%0A%0D%0A%23define+FileLog_Wetter+FileLog+.%2Flog%2FWetter-%25Y-%25m.log+Aussen%3A.*%7CFileLog_Wetter%3A.*%7CWetter%7Cwetter%3A.*%0D%0A%23attr+FileLog_Wetter+group+Log%0D%0A%23attr+FileLog_Wetter+logtype+temp4hum6%3Awind_speed%7Chumidity%7Ctemperature%7Cpressure%2Ctext%0D%0A%23attr+FileLog_Wetter+room+system%0D%0A%0D%0Adefine+logdb+DbLog+.%2Fdb.conf+.*%3A%28temperature%7Cpressure%7Chumidity%7Cwind%7Cwind_kph%7Crelative_humidity%7Cpressure_mb%29.*%0D%0Aattr+logdb+DbLogType+Current%2FHistory%0D%0Aattr+logdb+room+avgLogs%2Csystem%0D%0A%0D%0A%23%3F+Plots%0D%0A%0D%0Adefine+SVG_FileLog+SVG+logdb%3ASVG_FileLog_Wetter_1%3AHISTORY%0D%0Aattr+SVG_FileLog+alias+Bonn+gemessen%0D%0Aattr+SVG_FileLog+room+myWeather%0D%0A%23attr+SVG_FileLog+group+Wetter+Grafik%0D%0A%0D%0A%0D%0Adefine+SVG_logdb_1+SVG+logdb%3ASVG_logdb_1%3AHISTORY%0D%0Aattr+SVG_logdb_1+alias+Bonn+WUG%0D%0Aattr+SVG_logdb_1+room+myWeather%0D%0A%23attr+SVG_logdb_1+group+Wetter+Grafik%0D%0A%0D%0A%0D%0A%23%3F+Timer+Sachen%0D%0A%0D%0Adefine+t_log_log+at+*23%3A59%3A50+%7Bsystem%28%22%2Fopt%2Ffhem%2F.%2Fhl.sh%22%29%7D%0D%0Aattr+t_log_log+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log1+at+*23%3A59%3A51+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22f_Aussen%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+f_Aussen+Temp+Average%3A+%24avg+C+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log1+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log2+at+*23%3A59%3A52+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%228266_f_Aussen%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+8266_f_Aussen+Temp+Average%3A+%24avg+C+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log2+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log3+at+*23%3A59%3A53+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22myW_Bonn%3Atemp_c%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+WU+Aussen+Temp+Average%3A+%24avg+C+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log3+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log4+at+*23%3A59%3A54+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22f_Wohn1%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+f_Wohn1+Temp+Average%3A+%24avg+C+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log4+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log5+at+*23%3A59%3A55+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22myW_Bonn%3Apressure_mb%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Luftdruck+Average%3A+%24avg+hpa%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log5+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log6+at+*23%3A59%3A56+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22myW_Bonn%3Arelative_humidity%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Luftdfeuchte+Average%3A+%24avg+%25+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log6+room+avgLogs%0D%0A%0D%0Adefine+t_avg_log7+at+*23%3A59%3A57+%7B+my+%24avg+%3D+myAverage%28%2286400%22%2C+%22logdb%22%2C+%22myW_Bonn%3Aprecip_today_metric%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Niederschlag+Average%3A+%24avg+%25+%3E%3E+logs.log%22%29+%7D%0D%0Aattr+t_avg_log7+room+avgLogs%0D%0A%0D%0Adefine+FSD1_4_AN+at+*09%3A52%3A00+%7B+if+%28%24wday+%3D%3D+6%29+%7B+fhem+%28%22set+FSD1+on+%3B%3B+define+FSD1_4_Aus+at+%2B00%3A50%3A00+set+FSD1+off+%22%29+%7D+%7D%0D%0Aattr+FSD1_4_AN+room+at-notify-doif%0D%0A%0D%0A%23%3F+Dummys+und+Notifys%0D%0A%0D%0Adefine+heatwarn+dummy%0D%0Aattr+heatwarn+room+at-notify-doif%0D%0Adefine+di_heatwarn+DOIF+%28%5B8266_f_Kombi%3Aheat-index%5D++%3E+51.0%29+%28set+heatwarn+Erhohete+Gefahr%29+DOELSEIF+%28%5B8266_f_Kombi%3Aheat-index%5D++%3E+39.0%29+%28set+heatwarn+Gefahr%29+DOELSEIF+%28%5B8266_f_Kombi%3Aheat-index%5D++%3E+32.0%29+%28set+heatwarn+Erhoehte+Vorsicht%29+DOELSEIF+%28%5B8266_f_Kombi%3Aheat-index%5D++%3E+27.0%29+%28set+heatwarn+Vorsicht%29+DOELSE+%28set+heatwarn+OK%29%29%0D%0Aattr+di_heatwarn+room+at-notify-doif%0D%0A%0D%0A%23define+ds_Dosen+dummy%0D%0A%23attr+ds_Dosen+group+Dummy-Schalter%0D%0A%23attr+ds_Dosen+room+Wohnung%2Cat-notify-doif%0D%0A%23attr+ds_Dosen+webCmd+on%3Aoff%0D%0A%0D%0A%23define+n_Dosen+notify+ds_Dosen+set+FSD.*+%24EVENT%0D%0A%23attr+n_Dosen+room+at-notify-doif%0D%0A%0D%0Adefine+d_h_avg+dummy%0D%0Aattr+d_h_avg+room+avgLogs%0D%0Aattr+d_h_avg+webCmd+Trigger%0D%0A%0D%0Adefine+n_h_avg+notify+d_h_avg+%7Bsystem%28%22%2Fopt%2Ffhem%2F.%2Fdate.sh%22%29%7D%0D%0Aattr+n_h_avg+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg0+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22f_Aussen%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+f_Aussen+Temp+Average%3A+%24avg+C+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg0+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg1+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%228266_f_Aussen%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+8266_f_Aussen+Temp+Average%3A+%24avg+C+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg1+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg2+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22Wetter_Bonn%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Yahoo+Aussen+Temp+Average%3A+%24avg+C+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg2+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg3+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22f_Wohn1%3Atemperature%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+f_Wohn1+Temp+Average%3A+%24avg+C+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg3+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg4+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22Wetter_Bonn%3Apressure%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Luftdruck+Average%3A+%24avg+hpa%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg4+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg5+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22Wetter_Bonn%3Ahumidity%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Luftdfeuchte+Average%3A+%24avg+%25+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg5+room+avgLogs%0D%0A%0D%0Adefine+n_h_avg6+notify+d_h_avg+%7B+my+%24avg+%3D+myAverage%28%223600%22%2C+%22logdb%22%2C+%22Wetter_Bonn%3Awind_speed%3A%3A%22%29%3B%3B%3B%3B+system%28%22echo+Windgeschwindigkeit+Average%3A+%24avg+km%2Fh+%3E%3E+log_h.log%22%29+%7D%0D%0Aattr+n_h_avg6+room+avgLogs%0D%0A%0D%0A%23%3F+Doifs%0D%0A%0D%0Adefine+di_t_ss_Lampe+DOIF+%28%5B17%3A00-21%3A00%5D+and+%5BTwilight_Bonn%3Atwilight%5D+%3C+50%29+%28set+FSD2+on%29+DOELSE+%28set+FSD2+off%29%0D%0Aattr+di_t_ss_Lampe+devStateStyle+yellow%0D%0Aattr+di_t_ss_Lampe+room+at-notify-doif%0D%0A%0D%0Adefine+di_t_sr_RadioK+DOIF+%28%5B07%3A00-10%3A00%5D+and+%5BTwilight_Bonn%3Atwilight%5D+%3E+79%29+%28set+FSD3+on%29+DOELSE+%28set+FSD3+off%29%0D%0Aattr+di_t_sr_RadioK+room+at-notify-doif%0D%0A%0D%0A%23%3F+myWeather%0D%0A%0D%0Ainclude+myw.cfg%0D%0A%0D%0A%23%3F+Wetter%0D%0A%0D%0Adefine+regen_radar+weblink+iframe+http%3A%2F%2Fwww1.wdr.de%2Fwetter%2Fwettervorhersage%2Fwetter_nrw_ea100%7E_eam-b83df03422795cdb7f1d68e577a3fa4a.html%3Feap%3D8oI34N4hym4RDV6dhKK0OnLYM%252FNzIoiKEQqHYZPZjFxA8fnIlZBzZusUHuY5vCLHmXO8yt3RMUyPhKyFk%252BESF4i%252F1VjdcRgv9kizrefiAOutuMZPF%252BGorApesyZIG6haJhDS1VLBD8o840pVC%252Bqit3k3fOgJe9x3%0D%0Aattr+regen_radar+htmlattr+width%3D%221200%22+height%3D%221000%22%0D%0Aattr+regen_radar+room+myWeather%0D%0A%0D%0Adefine+Twilight_Bonn+Twilight+50.6843646+7.1666057+20246054%0D%0Aattr+Twilight_Bonn+room+system%0D%0A%0D%0Adefine+Twilight_Berlin+Twilight+52.5369628+13.4259669+638242%0D%0Aattr+Twilight_Berlin+room+system%0D%0A%0D%0Adefine+Wetter_Bonn+Weather+20246054+600+de%0D%0Aattr+Wetter_Bonn+DbLogExclude+.*%0D%0Aattr+Wetter_Bonn+room+system%0D%0A%23define+WetterOnline+weblink+iframe+http%3A%2F%2Fwww.wetteronline.de%2Fcgi-bin%2Fhpweather%3FPLZ%3D53179%0D%0A%23attr+WetterOnline+htmlattr+width%3D%22190%22+height%3D%22190%22%0D%0A%23attr+WetterOnline+room+IPhone%2CWohnung%0D%0A%0D%0A%23define+my_GDS+GDS+CoKmUKPh+gds35898%0D%0A%23attr+my_GDS+room+2.0+Wetter%0D%0A%0D%0A%23%3F+Proxy+readings%0D%0A%0D%0Adefine+TagesLicht+readingsProxy+Twilight_Bonn%3Atwilight%0D%0Aattr+TagesLicht+group+Wetter+Aktuell%0D%0Aattr+TagesLicht+room+system%0D%0A%0D%0A%23%3F+Funktionen%0D%0A%23define+mystat+statistics+.*Aussen%7Cf_Wohn1%7C.*f_Mobile%7CPrologue_146%0D%0A%23attr+mystat+DbLogExclude+mystat%0D%0A%23attr+mystat+room+avgLogs%0D%0A%0D%0Adefine+avg_temp+average+.*%3Atemperature%7C%2C*%3Ahumidity%7CmyW_Bonn%3Atemp_c%0D%0Aattr+avg_temp+room+avgLogs%0D%0A%0D%0A%23%3F+Warnings%0D%0A%23attr+warn_te

mp_lo+room+at-notify-doif%0D%0A%23define+warn_temp_hi+DOIF+%28%5Bf_Wohn1%3Atemperature%5D+%3C+23.0%29+%28set+hi_warn+off%29+DOELSE+%28set+hi_warn+on%29%7Bsystem%28%22%2Fopt%2Ffhem%2F.%2Fhi_warn.sh%22%29%7D%0D%0A%23attr+warn_temp_hi+room+at-notify-doif%0D%0A%23%0D%0A%23define+hi_warn+dummy%0D%0A%23attr+hi_warn+group+Meldung%0D%0A%23attr+hi_warn+room+system%0D%0A%23define+lo_warn+dummy%0D%0A%23attr+lo_warn+group+Meldung%0D%0A%23attr+lo_warn+room+system%0D%0A%0D%0A%23%3F+reading+Groups%0D%0A%0D%0A%0D%0A%23attr+AF+group+Fuehler%0D%0A%23attr+AF+room+Wohnung%0D%0A%23attr+AF+valueFormat+%7B+%22temperature%22+%3D%3E++%22%25.1f+%26deg%3B%3BC%22+%7D%0D%0A%23%0D%0A%23attr+IF+group+Fuehler%0D%0A%23attr+IF+room+Wohnung%0D%0A%23attr+IF+valueFormat+%7B+%22temperature%22+%3D%3E++%22%25.1f+%26deg%3B%3BC%22%2C+%22humidity%22+%3D%3E++%22%25.0f+%25%25%22+%2C%22heat-index%22+%3D%3E+%22%25.1f+%26deg%3B%3BC%22%7D%0D%0A%0D%0A%23%3F+Calender%0D%0A%0D%0Adefine+myCal+Calendar+ical+file+mycal.ics%0D%0Aattr+myCal+room+system%0D%0Aattr+myCal+userReadings+Termin+%7B+fhem%28%22get+myCal+text+next+1%22%29+%7D%0D%0A%0D%0A%23define+t_myCal+at+*00%3A01%3A00+%7B+my+%24Termin+%3D+fhem%28%22get+myCal+text+next+1%22%29+%7D%0D%0A%23attr+t_myCal+room+calendar%0D%0A%0D%0Adefine+myCal_Abfall+Calendar+ical+file+Abfall.ics%0D%0Aattr+myCal_Abfall+room+system%0D%0Aattr+myCal_Abfall+userReadings+Termin+%7B+fhem%28%22get+myCal_Abfall+text+next+1%22%29+%7D%0D%0A%0D%0A%23define+t_myCal_Abfall+at+*00%3A01%3A00+%7B+my+%24Termin+%3D+fhem%28%22get+myCal_Abfall+text+next+1%22%29+%7D%0D%0A%23attr+t_myCal_Abfall+room+Wohnung%2Ccalendar%0D%0A%0D%0Adefine+myCal_f_nrw_2016+Calendar+ical+file+f_nrw_2016.ics%0D%0Aattr+myCal_f_nrw_2016+room+system%0D%0Aattr+myCal_f_nrw_2016+userReadings+Termin+%7B+fhem%28%22get+myCal_f_nrw_2016+text+next+1%22%29+%7D%0D%0A%0D%0A%23define+t_myCal_f_nrw_2016+at+*00%3A01%3A00+%7B+my+%24Termin+%3D+fhem%28%22get+myCal_f_nrw_2016+text+next+1%22%29+%7D%0D%0A%23attr+t_myCal_f_nrw_2016+room+calendar%0D%0A%0D%0Adefine+myCal_feiertage+Calendar+ical+file+feiertage.ics%0D%0Aattr+myCal_feiertage+room+system%0D%0Aattr+myCal_feiertage+userReadings+Termin+%7B+fhem%28%22get+myCal_feiertage+text+next+1%22%29+%7D%0D%0A%0D%0A%23define+t_myCal_feiertage+at+*00%3A01%3A00+%7B+my+%24Termin+%3D+fhem%28%22get+myCal_feiertage+text+next+1%22%29+%7D%0D%0A%23attr+t_myCal_feiertage+room+calendar%0D%0A%0D%0Adefine+myKalender+readingsGroup+myCal%3ATermin%5C%0D%0AmyCal_feiertage%3ATermin%5C%0D%0AmyCal_Abfall%3ATermin%5C%0D%0AmyCal_f_nrw_2016%3ATermin%0D%0Aattr+myKalender+group+Info%0D%0Aattr+myKalender+noheading+0%0D%0Aattr+myKalender+nonames+1%0D%0Aattr+myKalender+notime+1%0D%0Aattr+myKalender+room+Wohnung%0D%0Aattr+myKalender+setList+1%0D%0A%0D%0A%23%3F+Radio%0D%0A%23define+wdr2+HTTPMOD+http%3A%2F%2Fwww1.wdr.de%2Fradio%2Fwdr2%2Findex.html+15%0D%0A%23attr+wdr2+userattr+reading01Name+reading01Regex%0D%0A%23attr+wdr2+reading01Name+titel%0D%0A%23attr+wdr2+reading01Regex+Jetzt+l%C3%A4uft%3A%28%5B%5Cs%5CS%5D%5B%5E%3C%5D%2B%29%0D%0A%23attr+wdr2+room+system%0D%0A%23attr+wdr2+stateFormat+wdr2+%3Atitel%0D%0A%23attr+wdr2+timeout+5%0D%0A%23attr+wdr2+verbose+0%0D%0A%23attr+wdr2+showError+1%0D%0A%23attr+wdr2+showMatched+1%0D%0A%0D%0A%23%3F+SIGNALduino%0D%0A%0D%0Adefine+Myduino+SIGNALduino+%2Fdev%2Fserial%2Fby-id%2Fusb-1a86_USB2.0-Serial-if00-port0%4057600%0D%0Aattr+Myduino+flashCommand+avrdude+-c+arduino+-b+57600+-P+%5BPORT%5D+-p+atmega328p+-vv+-U+flash%3Aw%3A%5BHEXFILE%5D+2%3E%5BLOGFILE%5D%0D%0Aattr+Myduino+hardware+nano328%0D%0Aattr+Myduino+room+arduino%2Csystem%0D%0A%0D%0A%23+orig+define+IT_FSD2+IT+0FFF0F0FFF+0F+F0%0D%0A%23define+IT_FSD2+IT+0FFF0F0FFF+0F+F0%0D%0Adefine+IT_FSD2+IT+00FF0F0FFF+0F+F0%0D%0Aattr+IT_FSD2+IODev+Myduino%0D%0Aattr+IT_FSD2+alias+Lampe+Schlafzimmer%0D%0Aattr+IT_FSD2+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+IT_FSD2+devStateIcon+on%3AFS20.on+off%3Ageneral_aus%0D%0Aattr+IT_FSD2+group+Dummy+Schalter%0D%0Aattr+IT_FSD2+room+Wohnung%2Carduino%0D%0A%0D%0Adefine+FB_FSD2+notify+IT_FSD2+set+FSD2+%24EVENT%0D%0Aattr+FB_FSD2+room+at-notify-doif%0D%0A%0D%0A%23+orig+define+IT_FSD3+IT+0FFF0FF0FF+0F+F0%0D%0A%23define+IT_FSD3+IT+0FFF0FF0FF+0F+F0%0D%0Adefine+IT_FSD3+IT+00FF0FF0FF+0F+F0%0D%0Aattr+IT_FSD3+IODev+Myduino%0D%0Aattr+IT_FSD3+alias+Radio+K%C3%BCche%0D%0Aattr+IT_FSD3+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+IT_FSD3+devStateIcon+on%3Arc_RADIO%40red+off%3Ageneral_aus%0D%0Aattr+IT_FSD3+group+Dummy+Schalter%0D%0Aattr+IT_FSD3+room+Wohnung%2Carduino%0D%0A%0D%0Adefine+FB_FSD3+notify+IT_FSD3+set+FSD3+%24EVENT%0D%0Aattr+FB_FSD3+room+at-notify-doif%0D%0A%0D%0A%23+orig+define+IT_FSD1+IT+0FFF00FFFF+0F+F0%0D%0A%23define+IT_FSD1+IT+0FFF00FFFF+0F+F0%0D%0Adefine+IT_FSD1+IT+00FF00FFFF+0F+F0%0D%0Aattr+IT_FSD1+IODev+Myduino%0D%0Aattr+IT_FSD1+alias+NAD%0D%0Aattr+IT_FSD1+cmdIcon+on%3Ageneral_an+off%3Ageneral_aus%0D%0Aattr+IT_FSD1+devStateIcon+on%3Arc_AUDIO%40red+off%3Ageneral_aus%0D%0Aattr+IT_FSD1+group+Dummy+Schalter%0D%0Aattr+IT_FSD1+room+Wohnung%2Carduino%0D%0A%0D%0Adefine+FB_FSD1+notify+IT_FSD1+set+FSD1+%24EVENT%0D%0Aattr+FB_FSD1+room+at-notify-doif%0D%0A%0D%0A%23define+IT_RESERVE+IT+0FFF0FFF0F+0F+F0%0D%0Adefine+IT_RESERVE+IT+00FF0FFF0F+0F+F0%0D%0Aattr+IT_RESERVE+IODev+Myduino%0D%0Aattr+IT_RESERVE+alias+update+include%0D%0Aattr+IT_RESERVE+devStateIcon+.*%3Ano%0D%0Aattr+IT_RESERVE+group+myMacros%0D%0Aattr+IT_RESERVE+room+arduino%2CmyWeather%0D%0A%0D%0Adefine+FB_RESERVE+notify+IT_RESERVE+include+Berlin.upd%3B%3B+include+Bonn.upd%0D%0Aattr+FB_RESERVE+room+at-notify-doif%0D%0A%0D%0A%0D%0A%23%3F+TCM+Sensoren%0D%0A%0D%0Adefine+Prologue_146+CUL_TCM97001+CUL_TCM97001_146%0D%0Aattr+Prologue_146+DbLogExclude+.*%0D%0Aattr+Prologue_146+event-min-interval+.*%3A300%0D%0Aattr+Prologue_146+event-on-change-reading+.*%0D%0Aattr+Prologue_146+model+Prologue%0D%0Aattr+Prologue_146+room+Wohnung%2Carduino%0D%0A%0D%0A%0D%0Adefine+IT_00FF00FFFF+IT+00FF00FFFF+0F+F0%0D%0Aattr+IT_00FF00FFFF+IODev+Myduino%0D%0Aattr+IT_00FF00FFFF+room+arduino%0D%0Adefine+IT_00FF0F0FFF+IT+00FF0F0FFF+0F+F0%0D%0Aattr+IT_00FF0F0FFF+IODev+Myduino%0D%0Aattr+IT_00FF0F0FFF+room+arduino%0D%0Adefine+IT_00FF0FF0FF+IT+00FF0FF0FF+0F+F0%0D%0Aattr+IT_00FF0FF0FF+IODev+Myduino%0D%0Aattr+IT_00FF0FF0FF+room+arduino%0D%0Adefine+IT_00FF0FFF0F+IT+00FF0FFF0F+0F+F0%0D%0Aattr+IT_00FF0FFF0F+IODev+Myduino%0D%0Aattr+IT_00FF0FFF0F+room+arduino%0D%0Adefine+IT_0FFF0F0FFF+IT+0FFF0F0FFF+0F+F0%0D%0Aattr+IT_0FFF0F0FFF+IODev+Myduino%0D%0Aattr+IT_0FFF0F0FFF+room+arduino%0D%0Adefine+IT_0FFF00FFFF+IT+0FFF00FFFF+0F+F0%0D%0Aattr+IT_0FFF00FFFF+IODev+Myduino%0D%0Aattr+IT_0FFF00FFFF+room+arduino%0D%0Adefine+IT_0FFF0FF0FF+IT+0FFF0FF0FF+0F+F0%0D%0Aattr+IT_0FFF0FF0FF+IODev+Myduino%0D%0Aattr+IT_0FFF0FF0FF+room+arduino%0D%0Adefine+IT_0FFF0FFFFF+IT+0FFF0FFFFF+0F+F0%0D%0Aattr+IT_0FFF0FFFFF+IODev+Myduino%0D%0Aattr+IT_0FFF0FFFFF+room+arduino%0D%0Adefine+IT_00FF0FFFFF+IT+00FF0FFFFF+0F+F0%0D%0Aattr+IT_00FF0FFFFF+IODev+Myduino%0D%0Aattr+IT_00FF0FFFFF+room+arduino%0D%0A%0D%0A%23%3F+pushover%0D%0A%0D%0A%23define+pm+Pushover+acCKVtJj85qHp2jgrmETxeKbvQe6V6+uc9mSRhN2bzaJwrZEcHWpp1CUfL5nE%0D%0A%23attr+pm+device+ip%0D%0A%23attr+pm+priority+0%0D%0A%23attr+pm+room+system%0D%0A%23attr+pm+timestamp+0%0D%0A%23attr+pm+title+fhem%0D%0A%0D%0A%23define+di_pm_Frost+DOIF+%28%5Bf_Aussen%3Atemperature%5D+%3C+0.0%29+%28set+pm+msg+%27Warnung%27+%27Aussen+Temperatur+vorne+unter+0+Grad+C%27+%27%27+1+%27siren%27+30+3600%29%0D%0A%23attr+di_pm_Frost+group+pushover%0D%0A%23attr+di_pm_Frost+room+at-notify-doif%0D%0A%0D%0A%23define+di_pm_Frost_H+DOIF+%28%5B8266_f_Aussen%3Atemperature%5D+%3C+0.0%29+%28set+pm+msg+%27Warnung%27+%27Aussen+Temperatur+hinten+unter+0+Grad+C%27+%27%27+1+%27siren%27+30+3600%29%0D%0A%23attr+di_pm_Frost_H+group+pushover%0D%0A%23attr+di_pm_Frost_H+room+at-notify-doif%0D%0A%0D%0A%23%3F+Anwesenheit%0D%0A%23define+iPhone+PRESENCE+lan-ping+192.168.2.112+600%0D%0A%23attr+iPhone+room+Wohnung%2Csystem%0D%0A%0D%0A%23%3F+sonstiges%0D%0Adefine+Unknown+CUL_TCM97001+CUL_TCM97001_Unknown%0D%0Aattr+Unknown+model+Unknown%0D%0Aattr+Unknown+room+arduino%0D%0Adefine+SD_WS07_TH_7+SD_WS07+SD_WS07_TH_7%0D%0Aattr+SD_WS07_TH_7+DbLogExclude+.*%0D%0Aattr+SD_WS07_TH_7+room+arduino; BUFLEN:0
2016.06.03 18:36:21 5: Cmd: >rereadcfg<
2016.06.03 18:36:21 5: Myduino SW: X00
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_ss
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_ss_civil
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sr_naut
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sr_civil
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sr_weather
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sr_indoor
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_ss_weather
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sr
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_ss_indoor
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_ss_naut
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_Midnight
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_weather
2016.06.03 18:36:21 5: [Twilight_Berlin] removing Timer: Twilight_Berlin_sunpos
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_ss_weather
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sr
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_ss_naut
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_ss_indoor
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_ss
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_ss_civil
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sr_naut
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sr_indoor
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sr_civil
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sr_weather
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_Midnight
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_weather
2016.06.03 18:36:21 5: [Twilight_Bonn] removing Timer: Twilight_Bonn_sunpos
2016.06.03 18:36:21 4: GPIO4: GPIO4_Undef(f_Aussen)
2016.06.03 18:36:21 4: GPIO4: GPIO4_Undef(f_Wohn1)
2016.06.03 18:36:21 4: GPIO4: GPIO4_Undef(RPi)
2016.06.03 18:36:21 1: Including fhem.cfg
2016.06.03 18:36:21 3: telnetPort: port 7072 opened
2016.06.03 18:36:21 3: WEB: port 8083 opened
2016.06.03 18:36:21 3: WEBphone: port 8084 opened
2016.06.03 18:36:21 2: eventTypes: loaded 2493 events from ./log/eventTypes.txt
2016.06.03 18:36:23 3: 8266_f_Aussen: Defined with URL http://192.168.2.110/status and interval 180
2016.06.03 18:36:23 3: 8266_f_Mobile: Defined with URL http://192.168.2.118/status and interval 7200
2016.06.03 18:36:23 3: 8266_f_Kombi: Defined with URL http://192.168.2.103/status and interval 180
2016.06.03 18:36:23 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user ewa
2016.06.03 18:36:23 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1483
2016.06.03 18:36:23 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2016.06.03 18:36:23 1: Including myw.cfg
2016.06.03 18:36:24 3: Myduino: IDlist MS 0 1 13 14 15 17 2 22 23 25 3 32 33 35 38 4 6 7
2016.06.03 18:36:24 3: Myduino: IDlist MU 16 20 21 24 26 27 28 29 30 31 34 36 37 39 5 8 9
2016.06.03 18:36:24 3: Myduino: IDlist MC 10 11 12 18
2016.06.03 18:36:24 3: Opening Myduino device /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
2016.06.03 18:36:24 3: Setting Myduino serial parameters to 57600,8,N,1
2016.06.03 18:36:24 3: Myduino device opened
2016.06.03 18:36:24 1: define: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:36:24 1: init: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:36:27 3: Myduino: Possible commands: ViRtXFSPCG
2016.06.03 18:36:27 3: Myduino: Firmwareversion: V 3.2.0-hf1 SIGNALduino - compiled at Mar  4 2016 22:41:08

2016.06.03 18:36:27 1: Including ./log/fhem.save
2016.06.03 18:36:29 3: get myCal_feiertage text next 1 : 01.05.15 00:00 Tag der Arbeit
2016.06.03 18:36:29 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:36:29 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:36:29 3: get myCal_f_nrw_2016 text next 1 : 21.03.16 00:00 Osterferien 2016 Nordrhein-Westfalen
2016.06.03 18:36:29 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:36:29 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:36:29 3: get myCal_Abfall text next 1 : 04.01.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:36:29 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:36:29 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:36:29 3: 8266_f_Mobile: Read callback: request type was update retry 0, no headers, body empty,
Error: connect to http://192.168.2.118:80 timed out
2016.06.03 18:45:02 0: Server shutdown
2016.06.03 18:45:35 1: Including fhem.cfg
2016.06.03 18:45:35 3: telnetPort: port 7072 opened
2016.06.03 18:45:36 3: WEB: port 8083 opened
2016.06.03 18:45:36 3: WEBphone: port 8084 opened
2016.06.03 18:45:36 2: eventTypes: loaded 2493 events from ./log/eventTypes.txt
2016.06.03 18:45:38 3: 8266_f_Aussen: Defined with URL http://192.168.2.110/status and interval 180
2016.06.03 18:45:38 3: 8266_f_Mobile: Defined with URL http://192.168.2.118/status and interval 7200
2016.06.03 18:45:38 3: 8266_f_Kombi: Defined with URL http://192.168.2.103/status and interval 180
2016.06.03 18:45:39 3: Connecting to database mysql:database=fhem;host=localhost;port=3306 with user ewa
2016.06.03 18:45:39 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established for pid 1342
2016.06.03 18:45:39 3: Connection to db mysql:database=fhem;host=localhost;port=3306 established
2016.06.03 18:45:40 1: Including myw.cfg
2016.06.03 18:45:40 3: [Twilight_Bonn] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2016.06.03 18:45:40 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/59_Twilight.pm line 416, <$fh> line 263.
2016.06.03 18:45:40 3: [Twilight_Berlin] got no weather info from yahoo. Error code: http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid=0%20and%20u=%27c%27&format=json&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys: Can't connect(1) to http://query.yahooapis.com:80: IO::Socket::INET: Bad hostname 'query.yahooapis.com:80'
2016.06.03 18:45:40 1: PERL WARNING: Use of uninitialized value $result in concatenation (.) or string at ./FHEM/59_Twilight.pm line 416, <$fh> line 266.
2016.06.03 18:45:40 1: PERL WARNING: Constant subroutine main::URL redefined at /usr/share/perl/5.20/constant.pm line 156.
2016.06.03 18:45:40 3: Myduino: IDlist MS 0 1 13 14 15 17 2 22 23 25 3 32 33 35 38 4 6 7
2016.06.03 18:45:40 3: Myduino: IDlist MU 16 20 21 24 26 27 28 29 30 31 34 36 37 39 5 8 9
2016.06.03 18:45:40 3: Myduino: IDlist MC 10 11 12 18
2016.06.03 18:45:40 3: Opening Myduino device /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0
2016.06.03 18:45:41 3: Setting Myduino serial parameters to 57600,8,N,1
2016.06.03 18:45:41 3: Myduino device opened
2016.06.03 18:45:41 1: define: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:45:41 1: init: /dev/serial/by-id/usb-1a86_USB2.0-Serial-if00-port0@57600
2016.06.03 18:45:43 1: PERL WARNING: Use of uninitialized value in string ne at ./FHEM/00_SIGNALduino.pm line 1720, <$fh> line 371.
2016.06.03 18:45:43 2: CUL_TCM97001 Unknown device CUL_TCM97001_146, please define it
2016.06.03 18:45:46 3: Myduino: Possible commands: ViRtXFSPCG
2016.06.03 18:45:46 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/00_SIGNALduino.pm line 856, <$fh> line 371.
2016.06.03 18:45:46 3: Myduino: Firmwareversion: V 3.2.0-hf1 SIGNALduino - compiled at Mar  4 2016 22:41:08

2016.06.03 18:45:47 1: Including ./log/fhem.save
2016.06.03 18:45:47 1: usb create starting
2016.06.03 18:45:47 3: Probing CUL device /dev/ttyAMA0
2016.06.03 18:45:47 3: Probing TCM_ESP3 device /dev/ttyAMA0
2016.06.03 18:45:48 3: Probing FRM device /dev/ttyAMA0
2016.06.03 18:45:53 1: usb create end
2016.06.03 18:45:53 0: Featurelevel: 5.7
2016.06.03 18:45:53 0: Server started with 86 defined entities (fhem.pl:11545/2016-05-29 perl:5.020002 os:linux user:fhem pid:1342)
2016.06.03 18:45:55 1: PERL WARNING: Use of uninitialized value $originalstart in numeric eq (==) at ./FHEM/57_Calendar.pm line 1277.
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 21.03.16 00:00 Osterferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_f_nrw_2016 text next 1 : 11.07.16 00:00 Sommerferien 2016 Nordrhein-Westfalen
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 04.01.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_Abfall text next 1 : 08.06.16 00:00 Gelbe Grossbehaelter
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 01.05.15 00:00 Tag der Arbeit
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:45:55 3: get myCal_feiertage text next 1 : 03.10.16 00:00 Tag der Deutschen Einheit
2016.06.03 18:46:08 3: Wetter_Bonn: gethostbyname query.yahooapis.com failed
2016.06.03 18:49:00 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:00 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:01 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:01 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:02 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:02 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:03 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:03 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:04 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:04 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:05 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:05 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:06 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:06 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:07 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:07 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:08 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:08 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:09 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:09 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:10 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:10 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:11 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:11 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:12 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.03 18:49:12 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.03 18:49:13 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 04 Juni 2016, 01:49:04
Zitat von: StefanStrobel am 03 Juni 2016, 21:26:12
ich denke ich habe den Bug bei DeleteOn etc. gefunden.
Anbei schon wieder eine neue Version ...
das glaube ich auch, prima. hab nur kurz gecheckt, restart funktioniert jeweils und LAST_REQUEST ist jetzt immer 1 mal vorhanden. ausgiebig kann ich erst in etwa 2 wochen testen.

bis dahin danke,
gruss frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Juni 2016, 08:40:31
Hallo Ernst,

leider muss zwischen 18:45 und 18:49 einiges an HTTPMOD Logs fehlen.
Ist verbose 5 tatsächlich schon in der fhem.cfg gestanden?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 04 Juni 2016, 09:23:03
Zitat von: StefanStrobel am 04 Juni 2016, 08:40:31
Hallo Ernst,

leider muss zwischen 18:45 und 18:49 einiges an HTTPMOD Logs fehlen.
Ist verbose 5 tatsächlich schon in der fhem.cfg gestanden?

Gruss
    Stefan

Stimmt, genau wie zwischen 18:39 und 18:45 auch. Habe ich keine Erklärung für. Ich weiss nur dass ich nach einem update irgendwann bemerkt hatte dass Fühler x keine Werte mehr lieferte. Kurz zuvor hatte ich aber irgendwo ein attribute (ich meine es war irgendwas mit longpol, hatte ich im Forum gelesen) geändert und wusste jetzt nicht was ursächlich für mein Problem war. Ich habe dann denn pi auch neu gebootet, evtl auch zweimal. Das könnte eine Erklärung sein.

Jetzt läuft's seit gestern problemlos durch. Der log ist jetzt 1,7mb und ich werde ihn mal auf dem pc sichern und danschliessend löschen.

Erst nachdem ich deine Nachricht um 18:26 gelesen hatte, habe ich verbose local 5 gesetzt. Das wird schon bis zu 20 min später gewesen sein??
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 04 Juni 2016, 09:58:39
ist ja alles Quatsch, habe das komplette Logfile gezippt und hänge es einfach hier an. Lediglich meinen API-Key für WU unkenntlich gemacht
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 04 Juni 2016, 21:16:38
so es ist wieder passiert. Es ist also so dass, wenn das WLAN weggeht HTTPMOD blockiert, zu macht wie man es auch nennen mag. Das war früher definitiv nicht so. Ich habe öfters mal Probleme mit dem WLAN, aber sobald es wieder da war, kamen auch die Daten wieder. Ein busy =1 habe ich nie gesehen. Ein shutdown restart cleared das flag und es läuft wie gewohnt und die Daten kommen wieder.  Ich kämpfe noch mit pkzip und dem log. Pkzip meint ich hätte nicht genug Festplatte frei ....... 40Gb sollten eigentlich reichen für ein 2MB Textfile ......
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Juni 2016, 09:00:37
Hallo Ernst,

das Internal BUSY sollte im Normalfall die meiste Zeit auf 0 stehen. Nur währen HTTPMOD auf eine Antwort von einem Web-Server wartet, darf es 1 sein.
In Deinem Fall gehe ich stark davon aus, dass HttpUtils durch einen nicht erreichbaren DNS-Server HTTPMOD mit dem falschen Hash aufgerufen hat. Dadurch wurde dann BUSY nicht mehr auf 0 gesetzt und Dein Problem nimmt seinen Lauf. So zumindest lese ich es aus den wenigen Logs heraus.
Wenn Du beim aktuellen Fall mehr Logs hast, in denen man auch noch den letzten korrekt beantworteten Request bis zum ersten Erhöhen der qlen sieht, sollte sich das klären lassen.
Der Fehler in HttpUtils, der das ausgelöst haben könnte, ist jedenfalls jetzt auch behoben, Rudi hat ein entsprechendes Update eingecheckt und das solltest Du mit dem nächsten Update bekommen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 05 Juni 2016, 09:29:59
Hallo Stefan, ich hatte diesmal drauf geachtet wann das device die letzten Daten empfangen hat und so geziehlt die Stelle im Log gesucht. Hier ist er:

016.06.04 16:37:30 4: 8266_f_Aussen: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 87
Connection: close
Access-Control-Allow-Origin: *,
Body: 8266_f_Aussen --- Status

Anzahl Sensoren : 1

ROM : 402552363516421481   Temp : 20.19
no error
2016.06.04 16:37:30 5: 8266_f_Aussen: ExtractSid called, context reading, num
2016.06.04 16:37:30 4: 8266_f_Aussen: CheckAuth decided no authentication required
2016.06.04 16:37:30 5: 8266_f_Aussen: Read starts parsing response to update with defined readings: 1
2016.06.04 16:37:30 5: 8266_f_Aussen: ExtractReading temperature with regex /Temp : ([\-\d\.]+)/...
2016.06.04 16:37:30 5: 8266_f_Aussen: 1 capture group(s), matchlist = 20.19
2016.06.04 16:37:30 4: 8266_f_Aussen: ExtractReading for reading1-1 sets temperature to 20.19
2016.06.04 16:37:30 4: 8266_f_Aussen: Read response to update matched Reading(s) temperature
2016.06.04 16:37:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 0
2016.06.04 16:40:29 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.04 16:40:29 4: 8266_f_Aussen: update timer modified: will call GetUpdate in 180.0 seconds at 2016-06-04 16:43:29
2016.06.04 16:40:29 4: 8266_f_Aussen: AddToQueue adds update, initial queue len: 0
2016.06.04 16:40:29 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.04 16:40:29 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:40:29 4: 8266_f_Aussen: HandleSendQueue sends request type update to URL http://192.168.2.110/status, No Data,
header: 1,
timeout 2
2016.06.04 16:40:29 4: HttpUtils url=http://192.168.2.110/status
2016.06.04 16:40:30 4: http://192.168.2.110/status: HTTP response code 200
2016.06.04 16:40:30 4: HttpUtils http://192.168.2.110/status: Got data, length: 87
2016.06.04 16:40:30 4: 8266_f_Aussen: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 87
Connection: close
Access-Control-Allow-Origin: *,
Body: 8266_f_Aussen --- Status

Anzahl Sensoren : 1

ROM : 402552363516421481   Temp : 20.25
no error
2016.06.04 16:40:30 5: 8266_f_Aussen: ExtractSid called, context reading, num
2016.06.04 16:40:30 4: 8266_f_Aussen: CheckAuth decided no authentication required
2016.06.04 16:40:30 5: 8266_f_Aussen: Read starts parsing response to update with defined readings: 1
2016.06.04 16:40:30 5: 8266_f_Aussen: ExtractReading temperature with regex /Temp : ([\-\d\.]+)/...
2016.06.04 16:40:30 5: 8266_f_Aussen: 1 capture group(s), matchlist = 20.25
2016.06.04 16:40:30 4: 8266_f_Aussen: ExtractReading for reading1-1 sets temperature to 20.25
2016.06.04 16:40:30 4: 8266_f_Aussen: Read response to update matched Reading(s) temperature
2016.06.04 16:40:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 0
2016.06.04 16:43:29 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.04 16:43:29 4: 8266_f_Aussen: update timer modified: will call GetUpdate in 180.0 seconds at 2016-06-04 16:46:29
2016.06.04 16:43:29 4: 8266_f_Aussen: AddToQueue adds update, initial queue len: 0
2016.06.04 16:43:29 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.04 16:43:29 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:43:30 4: 8266_f_Aussen: HandleSendQueue sends request type update to URL http://192.168.2.110/status, No Data,
header: 1,
timeout 2
2016.06.04 16:43:30 4: HttpUtils url=http://192.168.2.110/status
2016.06.04 16:43:30 4: http://192.168.2.110/status: HTTP response code 200
2016.06.04 16:43:30 4: HttpUtils http://192.168.2.110/status: Got data, length: 87
2016.06.04 16:43:30 4: 8266_f_Aussen: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 87
Connection: close
Access-Control-Allow-Origin: *,
Body: 8266_f_Aussen --- Status

Anzahl Sensoren : 1

ROM : 402552363516421481   Temp : 20.06
no error
2016.06.04 16:43:30 5: 8266_f_Aussen: ExtractSid called, context reading, num
2016.06.04 16:43:30 4: 8266_f_Aussen: CheckAuth decided no authentication required
2016.06.04 16:43:30 5: 8266_f_Aussen: Read starts parsing response to update with defined readings: 1
2016.06.04 16:43:30 5: 8266_f_Aussen: ExtractReading temperature with regex /Temp : ([\-\d\.]+)/...
2016.06.04 16:43:30 5: 8266_f_Aussen: 1 capture group(s), matchlist = 20.06
2016.06.04 16:43:30 4: 8266_f_Aussen: ExtractReading for reading1-1 sets temperature to 20.06
2016.06.04 16:43:30 4: 8266_f_Aussen: Read response to update matched Reading(s) temperature
2016.06.04 16:43:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 0
2016.06.04 16:46:30 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.04 16:46:30 4: 8266_f_Aussen: update timer modified: will call GetUpdate in 180.0 seconds at 2016-06-04 16:49:30
2016.06.04 16:46:30 4: 8266_f_Aussen: AddToQueue adds update, initial queue len: 0
2016.06.04 16:46:30 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.04 16:46:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:46:30 4: 8266_f_Aussen: HandleSendQueue sends request type update to URL http://192.168.2.110/status, No Data,
header: 1,
timeout 2
2016.06.04 16:46:30 4: HttpUtils url=http://192.168.2.110/status
2016.06.04 16:49:30 4: 8266_f_Aussen: GetUpdate called (update)
2016.06.04 16:49:30 4: 8266_f_Aussen: update timer modified: will call GetUpdate in 180.0 seconds at 2016-06-04 16:52:30
2016.06.04 16:49:30 4: 8266_f_Aussen: AddToQueue adds update, initial queue len: 0
2016.06.04 16:49:30 5: 8266_f_Aussen: AddToQueue adds type update to URL http://192.168.2.110/status, no data, header 1, retry 0
2016.06.04 16:49:30 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:30 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:31 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:31 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:32 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:32 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:33 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:33 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:34 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:34 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:35 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:35 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:36 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:36 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:37 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:37 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:38 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:38 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:39 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:39 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:40 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:40 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:41 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:41 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2016.06.04 16:49:42 5: 8266_f_Aussen: HandleSendQueue called, qlen = 1
2016.06.04 16:49:42 5: 8266_f_Aussen: HandleSendQueue - still waiting for reply to last request, delay sending from queue


Das geht jetzt weiter bis 20:45 da habe ich abgebrochen und qlen war bei 21.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Juni 2016, 14:56:07
Hallo Ernst,

das Problem scheint in der Interaktion zwischen HTTPMOD und einer neuen Version der HttpUtils zu liegen.
(siehe https://forum.fhem.de/index.php/topic,53309.15.html).
Ich habe jetzt erstmal ein paar Zeilen in HTTPMOD eingebaut, die verhindern sollen, dass HTTPMOD in solchen Fällen dauerhaft auf Antworten wartet.
Anbei eine neue Version.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ernst1024 am 05 Juni 2016, 18:36:51
Danke Stefan, super Service!

Ich werde berichten und wenn ich noch irgendwas zur Lösung beitragen kann, lass es mich wissen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 07 Juli 2016, 19:54:48
Hallo Leute,

brauche Unterstützung bei meinem Gigaset-Elements-System. Ich habe den HTTPMOD soweit eingerichtet, dass ich die Daten über FHEM einlesen kann. Die Attributen-Enstellungen habe ich im Anhang beigefügt. Das Problem was ich jetzt habe ist, dass die Anmeldung nur dann funktioniert, wenn ich attr test sslArgs SSL_verify_mode,SSL_VERIFY_NONE setze. Sobald ich diesen entferne funktioniert die Anmeldesequenz nicht mehr und ich bekomme aus FHEM folgende Fehlermeldung:

2016.07.07 19:15:32 3: test: Read callback: request type was update retry 0, no headers, body empty,
Error: https://im.gigaset-elements.com/identity/api/v1/user/info: Can't connect(2) to https://im.gigaset-elements.com:443: SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed SSL connect attempt failed error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
2016.07.07 19:15:32 3: test: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at (eval 59) line 1.


Gruß
Alexander

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 16 Juli 2016, 14:21:41
Kann die Perl Warnungen die aus dem HTTPMOD Device nicht lokalisieren um eine Fehler zu korrigieren.

Auch aus dem List sehe ich nichts heraus.
Vielleicht kann mir hier jemand behilflich sein.
Anbei die Log Perl Warnungen und das List.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 17 Juli 2016, 13:04:24
Hallo Chris,

wenn Du im Gerät verbose auf 5 setzt, dann sollte es im Log einfacher sein zu erkennen, in welchem Kontext die Warnung erzeugt wird.
Zudem wäre der relevante Auszug aus Deiner fhem.cfg hilfreich. Den finde ich einfach lesbar als die Ausgabe von list.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 18 Juli 2016, 14:15:57
@StefanStrobel

Anbei das gewünschte Config
#####################################
### Resol DL2 HTML Auswertungen   ###
#####################################
define DL2 HTTPMOD http://192.168.xxx.xxx/dlx/download/live?&outputType=json&source=current 15
attr DL2 devStateIcon !SZ:it_network@green SZ:it_network@red
attr DL2 event-on-change-reading headersets_01_packets_01_field_values_(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32)_value,headersets_01_packets_02_field_values_(01|02|03|04)_value,(F|W)M,headersets_01_packets_03_field_values_(01|02|03|04)_value,T_0(1|2|3|4|5|6|7|8|9),T_1(0|1|2),CS10,IMP0(1|2),S(BRM|KSM|BEM|Z),R_(1|2|3|4|5|6|7|8|9),RBEM,RV,VT_(1|2),RT_(1|2),W_(1|2)_(Wh|kWh|MWh),VS_(1|2)_(lph|lpmin|m3ph)
attr DL2 extractAllJSON 1
attr DL2 group Schnittstellen
attr DL2 icon sani_solar_temp
attr DL2 room _RxTx
attr DL2 stateFormat SZ
attr DL2 userReadings T_01:headersets_01_packets_01_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_01_value",0)},\
T_02:headersets_01_packets_01_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_02_value",0)},\
T_03:headersets_01_packets_01_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_03_value",0)},\
T_04:headersets_01_packets_01_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_04_value",0)},\
T_05:headersets_01_packets_01_field_values_05_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_05_value",0)},\
T_06:headersets_01_packets_01_field_values_06_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_06_value",0)},\
T_07:headersets_01_packets_01_field_values_07_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_07_value",0)},\
T_08:headersets_01_packets_01_field_values_08_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_08_value",0)},\
T_09:headersets_01_packets_01_field_values_09_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_09_value",0)},\
T_10:headersets_01_packets_01_field_values_10_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_10_value",0)},\
T_11:headersets_01_packets_01_field_values_11_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_11_value",0)},\
T_12:headersets_01_packets_01_field_values_12_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_12_value",0)},\
CS10:headersets_01_packets_01_field_values_13_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_13_value",0)},\
IMP01:headersets_01_packets_01_field_values_14_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_14_value",0)},\
IMP02:headersets_01_packets_01_field_values_15_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_15_value",0)},\
SBRM:headersets_01_packets_01_field_values_16_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_16_value",0)},\
SKSM:headersets_01_packets_01_field_values_17_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_17_value",0)},\
SBEM:headersets_01_packets_01_field_values_18_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_18_value",0)},\
R_1:headersets_01_packets_01_field_values_19_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_19_value",0)},\
R_2:headersets_01_packets_01_field_values_20_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_20_value",0)},\
R_3:headersets_01_packets_01_field_values_21_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_21_value",0)},\
R_4:headersets_01_packets_01_field_values_22_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_22_value",0)},\
R_5:headersets_01_packets_01_field_values_23_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_23_value",0)},\
R_6:headersets_01_packets_01_field_values_24_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_24_value",0)},\
R_7:headersets_01_packets_01_field_values_25_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_25_value",0)},\
R_8:headersets_01_packets_01_field_values_26_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_26_value",0)},\
R_9:headersets_01_packets_01_field_values_27_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_27_value",0)},\
RBEM:headersets_01_packets_01_field_values_28_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_28_value",0)},\
FM:headersets_01_packets_01_field_values_29_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_29_value",0)},\
WM:headersets_01_packets_01_field_values_30_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_30_value",0)},\
RV:headersets_01_packets_01_field_values_31_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_31_value",0)},\
SZ:headersets_01_packets_01_field_values_32_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_32_value",0)},\
VT_1:headersets_01_packets_02_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_01_value",0)},\
RT_1:headersets_01_packets_02_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_02_value",0)},\
VS_1_lph:headersets_01_packets_02_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_03_value",0)},\
W_1_Wh:headersets_01_packets_02_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_04_value",0)},\
VT_2:headersets_01_packets_03_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_01_value",0)},\
RT_2:headersets_01_packets_03_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_02_value",0)},\
VS_2_lph:headersets_01_packets_03_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_03_value",0)},\
W_2_Wh:headersets_01_packets_03_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_04_value",0)},\
W_1_kWh:W_1_Wh.* {ReadingsVal("DL2","W_1_Wh",0)/1000},\
W_1_MWh:W_1_Wh.* {ReadingsVal("DL2","W_1_Wh",0)/1000000},\
W_2_kWh:W_2_Wh.* {ReadingsVal("DL2","W_2_Wh",0)/1000},\
W_2_MWh:W_2_Wh.* {ReadingsVal("DL2","W_2_Wh",0)/1000000},\
VS_1_lpmin:VS_1_lph.* {ReadingsVal("DL2","VS_1_lph",0)/60},\
VS_1_m3ph:VS_1_lph.* {ReadingsVal("DL2","VS_1_lph",0)/1000},\
VS_2_lpmin:VS_2_lph.* {ReadingsVal("DL2","VS_2_lph",0)/60},\
VS_2_m3ph:VS_2_lph.* {ReadingsVal("DL2","VS_2_lph",0)/1000}
attr DL2 verbose 1
# attr DL2 event-on-change-reading (T_0(1|2|3|4|5|6|7|8|9)),(T_1(0|1|2)),CS10,(IMP0(1|2)),(S(BRM|KSM|BEM)),(R_(1|2|3|4|5|6|7|8|9)),RBEM,RV,(VT_(1|2)),(F|W)M,(RT_(1|2)),(W_(1|2)),(W_(1|2)_(kWh|MWh)),(VS_(1|2)_(lph|lpmin|m3ph))
# attr DL2 event-on-change-reading T_0(1|2|3|4|5|6|7|8|9),T_1(0|1|2),CS10,IMP0(1|2),S(BRM|KSM|BEM|Z),R_(1|2|3|4|5|6|7|8|9),RBEM,(F|W)M,RV,VT_(1|2),RT_(1|2),VS_(1|2),W_(1|2),W_1_(kWh|MWh),W_2_(kWh|MWh),VS_1_(lpmin|m3ph),VS_2_(lpmin|m3ph)
# attr DL2 event-on-change-reading headersets_01_packets_01_field_values_01_value,headersets_01_packets_01_field_values_02_value,headersets_01_packets_01_field_values_03_value,headersets_01_packets_01_field_values_04_value,headersets_01_packets_01_field_values_05_value,headersets_01_packets_01_field_values_06_value,headersets_01_packets_01_field_values_07_value,headersets_01_packets_01_field_values_08_value,headersets_01_packets_01_field_values_09_value,headersets_01_packets_01_field_values_10_value,headersets_01_packets_01_field_values_11_value,headersets_01_packets_01_field_values_12_value,headersets_01_packets_01_field_values_13_value,headersets_01_packets_01_field_values_14_value,headersets_01_packets_01_field_values_15_value,headersets_01_packets_01_field_values_16_value,headersets_01_packets_01_field_values_17_value,headersets_01_packets_01_field_values_18_value,headersets_01_packets_01_field_values_19_value,headersets_01_packets_01_field_values_20_value,headersets_01_packets_01_field_values_21_value,headersets_01_packets_01_field_values_22_value,headersets_01_packets_01_field_values_23_value,headersets_01_packets_01_field_values_24_value,headersets_01_packets_01_field_values_25_value,headersets_01_packets_01_field_values_26_value,headersets_01_packets_01_field_values_27_value,headersets_01_packets_01_field_values_28_value,headersets_01_packets_01_field_values_29_value,headersets_01_packets_01_field_values_30_value,headersets_01_packets_01_field_values_31_value,headersets_01_packets_01_field_values_32_value,headersets_01_packets_02_field_values_01_value,headersets_01_packets_02_field_values_02_value,headersets_01_packets_02_field_values_03_value,headersets_01_packets_02_field_values_04_value,headersets_01_packets_03_field_values_01_value,headersets_01_packets_03_field_values_02_value,headersets_01_packets_03_field_values_03_value,headersets_01_packets_03_field_values_04_value

# -----------------------------------------------------------------------------------------------

#####################################
###       Anzeigenwerte für       ###
###      Floorplan definieren     ###
#####################################
define DL2_T01 readingsProxy DL2:T_01
attr DL2_T01 alias S01 Kollektortemperatur
attr DL2_T01 fp_SolarThermie 20,472,5,,
attr DL2_T01 group Sensoren
attr DL2_T01 icon sani_solar_temp
attr DL2_T01 room SolarThermie
attr DL2_T01 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T02 readingsProxy DL2:T_02
attr DL2_T02 alias S02 Speichertemperatur unten
attr DL2_T02 fp_SolarThermie 524,691,5, ,DL2_T02
attr DL2_T02 group Sensoren
attr DL2_T02 icon sani_buffer_temp_down
attr DL2_T02 room SolarThermie
attr DL2_T02 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T03 readingsProxy DL2:T_03
attr DL2_T03 alias S03 Speichertemperatur oben
attr DL2_T03 fp_SolarThermie 397,693,5,,
attr DL2_T03 group Sensoren
attr DL2_T03 icon sani_buffer_temp_up
attr DL2_T03 room SolarThermie
attr DL2_T03 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T04 readingsProxy DL2:T_04
attr DL2_T04 alias S04 Pooltemperatur
attr DL2_T04 event-min-interval .*:60
attr DL2_T04 event-on-change-reading state
attr DL2_T04 fp_SolarThermie 646,308,5, ,DL2_T04
attr DL2_T04 group Sensoren
attr DL2_T04 icon temp_temperature
attr DL2_T04 room AB-Pool,SolarThermie
attr DL2_T04 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T05 readingsProxy DL2:T_05
attr DL2_T05 alias S05 Wärmetauscher Rücklauftemperatur
attr DL2_T05 fp_SolarThermie 519,419,5,,
attr DL2_T05 group Sensoren
attr DL2_T05 icon sani_buffer_temp_up
attr DL2_T05 room SolarThermie
attr DL2_T05 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T06 readingsProxy DL2:T_06
attr DL2_T06 alias S06 Boilertemperatur
attr DL2_T06 fp_SolarThermie 446,876,5,,
attr DL2_T06 group Sensoren
attr DL2_T06 icon sani_boiler_temp
attr DL2_T06 room SolarThermie
attr DL2_T06 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T07 readingsProxy DL2:T_07
attr DL2_T07 alias S07 Heizung Rücklauftemperatur
attr DL2_T07 fp_SolarThermie 173,1086,5,,
attr DL2_T07 group Sensoren
attr DL2_T07 icon sani_return_temp
attr DL2_T07 room SolarThermie
attr DL2_T07 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T08 readingsProxy DL2:T_08
attr DL2_T08 alias S08 Speichertemperatur mitte
attr DL2_T08 fp_SolarThermie 458,691,5,,
attr DL2_T08 group Sensoren
attr DL2_T08 icon sani_buffer_temp_all
attr DL2_T08 room SolarThermie
attr DL2_T08 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T09 readingsProxy DL2:T_09
attr DL2_T09 alias S09 Kollektor Vorlauftemperatur
attr DL2_T09 fp_SolarThermie 194,522,5,,
attr DL2_T09 group Sensoren
attr DL2_T09 icon sani_supply_temp
attr DL2_T09 room SolarThermie
attr DL2_T09 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T10 readingsProxy DL2:T_10
attr DL2_T10 alias S10 Kollektor Rücklauftemperatur
attr DL2_T10 fp_SolarThermie 194,425,5,,
attr DL2_T10 group Sensoren
attr DL2_T10 icon sani_return_temp
attr DL2_T10 room SolarThermie
attr DL2_T10 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T11 readingsProxy DL2:T_11
attr DL2_T11 alias S11 Aussentemperatur
attr DL2_T11 fp_SolarThermie 134,273,5,DL2_T11,
attr DL2_T11 group Sensoren
attr DL2_T11 icon temp_outside
attr DL2_T11 room AB,OG1-Balkon,SolarThermie,Wetterstation
attr DL2_T11 stateFormat {sprintf("%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_T12 readingsProxy DL2:T_12
attr DL2_T12 alias S12 Heizung Vorlauftemperatur
attr DL2_T12 fp_SolarThermie 106,1106,5,,
attr DL2_T12 group Sensoren
attr DL2_T12 icon sani_supply_temp
attr DL2_T12 room SolarThermie
attr DL2_T12 stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_CS10 readingsProxy DL2:CS10
attr DL2_CS10 alias CS10 Strahlungsenergie
attr DL2_CS10 fp_SolarThermie 61,326,5, ,DL2_CS10
attr DL2_CS10 group Sensoren
attr DL2_CS10 icon sani_solar
attr DL2_CS10 room AB-Pool,OG1,OG1-Balkon,OG1-Wohnzimmer,SolarThermie
attr DL2_CS10 stateFormat state W/m²

define DL2_R1 readingsProxy DL2:R_1
attr DL2_R1 alias R1 Schichtspeicherpumpe
attr DL2_R1 fp_SolarThermie 437,481,5,
attr DL2_R1 group Geräte
attr DL2_R1 icon sani_pump
attr DL2_R1 room SolarThermie
attr DL2_R1 stateFormat state %

define DL2_R2 readingsProxy DL2:R_2
attr DL2_R2 alias R2 Reserve
attr DL2_R2 group Geräte
attr DL2_R2 icon sani_pump
attr DL2_R2 room SolarThermie
attr DL2_R2 stateFormat state %

define DL2_R3 readingsProxy DL2:R_3
attr DL2_R3 alias R3 Kessel Vorlaufpumpe
attr DL2_R3 fp_SolarThermie 380,967,5,DL2_R3,
attr DL2_R3 group Geräte
attr DL2_R3 icon sani_pump
attr DL2_R3 room SolarThermie
attr DL2_R3 stateFormat state %

define DL2_R4 readingsProxy DL2:R_4
attr DL2_R4 alias R4 Poolpumpe primär
attr DL2_R4 fp_SolarThermie 439,422,5,
attr DL2_R4 group Geräte
attr DL2_R4 icon sani_pump
attr DL2_R4 room AB-Pool,SolarThermie
attr DL2_R4 stateFormat state %

define DL2_R5 readingsProxy DL2:R_5
attr DL2_R5 alias R5 Bypasspumpe
attr DL2_R5 fp_SolarThermie 456,422,5,,
attr DL2_R5 group Geräte
attr DL2_R5 icon sani_pump
attr DL2_R5 room SolarThermie
attr DL2_R5 stateFormat state %

define DL2_R6 readingsProxy DL2:R_6
attr DL2_R6 alias R6 Zirkulationspumpe WW
attr DL2_R6 fp_SolarThermie 428,762,5,,
attr DL2_R6 group Geräte
attr DL2_R6 icon sani_pump
attr DL2_R6 room SolarThermie
attr DL2_R6 stateFormat state %

define DL2_R7 readingsProxy DL2:R_7
attr DL2_R7 alias R7 Heizung Vorlaufpumpe
attr DL2_R7 fp_SolarThermie 376,1095,5,,
attr DL2_R7 group Geräte
attr DL2_R7 icon sani_pump
attr DL2_R7 room SolarThermie
attr DL2_R7 stateFormat state %

define DL2_R8 readingsProxy DL2:R_8
attr DL2_R8 alias R8 Poolpumpe sekundär
attr DL2_R8 fp_SolarThermie 597,321,5,,
attr DL2_R8 group Geräte
attr DL2_R8 icon sani_pump
attr DL2_R8 room AB-Pool,SolarThermie
attr DL2_R8 stateFormat state %

define DL2_R9 readingsProxy DL2:R_9
attr DL2_R9 alias R9 Reserve
attr DL2_R9 group Geräte
attr DL2_R9 icon sani_pump
attr DL2_R9 room SolarThermie
attr DL2_R9 stateFormat state %

define DL2_WMZ1IP readingsProxy DL2:IMP01
attr DL2_WMZ1IP alias WMZ1 Impulszähler
attr DL2_WMZ1IP group Wärmemengenzähler 1 - DeltaSol M
attr DL2_WMZ1IP icon vent_ventilation_level_3
attr DL2_WMZ1IP room SolarThermie

define DL2_WMZ2IP readingsProxy DL2:IMP02
attr DL2_WMZ2IP alias WMZ2 Impulszähler
attr DL2_WMZ2IP group Wärmemengenzähler 2 - DeltaSol M
attr DL2_WMZ2IP icon vent_ventilation_level_3
attr DL2_WMZ2IP room SolarThermie

define DL2_WMZ1RT readingsProxy DL2:RT_1
attr DL2_WMZ1RT alias WMZ1 Rücklauftemperatur
attr DL2_WMZ1RT group Wärmemengenzähler 1 - DeltaSol M
attr DL2_WMZ1RT icon sani_return_temp
attr DL2_WMZ1RT room SolarThermie
attr DL2_WMZ1RT stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_WMZ1VS readingsProxy DL2:VS_1_lph
attr DL2_WMZ1VS alias WMZ1 Volumenstrom
attr DL2_WMZ1VS fp_SolarThermie 217,352,5, ,DL2_WMZ1VS
attr DL2_WMZ1VS group Wärmemengenzähler 1 - DeltaSol M
attr DL2_WMZ1VS icon vent_ventilation_level_3
attr DL2_WMZ1VS room AB-Pool,SolarThermie
attr DL2_WMZ1VS stateFormat state l/h

define DL2_WMZ1VT readingsProxy DL2:VT_1
attr DL2_WMZ1VT alias WMZ1 Vorlauftemperatur
attr DL2_WMZ1VT group Wärmemengenzähler 1 - DeltaSol M
attr DL2_WMZ1VT icon sani_supply_temp
attr DL2_WMZ1VT room SolarThermie
attr DL2_WMZ1VT stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_WMZ1W readingsProxy DL2:W_1_MWh
attr DL2_WMZ1W alias WMZ1 Wärmeenergie
attr DL2_WMZ1W fp_SolarThermie 234,333,5,DL2_WMZ1W,
attr DL2_WMZ1W group Wärmemengenzähler 1 - DeltaSol M
attr DL2_WMZ1W icon sani_measure_power
attr DL2_WMZ1W room SolarThermie
attr DL2_WMZ1W stateFormat state MWh
attr DL2_WMZ1W valueFn {sprintf("%.1f", $VALUE)}

define DL2_WMZ2RT readingsProxy DL2:RT_2
attr DL2_WMZ2RT alias WMZ2 Rücklauftemperatur
attr DL2_WMZ2RT group Wärmemengenzähler 2 - DeltaSol M
attr DL2_WMZ2RT icon sani_return_temp
attr DL2_WMZ2RT room AB-Pool,SolarThermie
attr DL2_WMZ2RT stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_WMZ2VS readingsProxy DL2:VS_2_lph
attr DL2_WMZ2VS alias WMZ2 Volumenstrom
attr DL2_WMZ2VS group Wärmemengenzähler 2 - DeltaSol M
attr DL2_WMZ2VS icon vent_ventilation_level_3
attr DL2_WMZ2VS room SolarThermie
attr DL2_WMZ2VS stateFormat state l/h

define DL2_WMZ2VT readingsProxy DL2:VT_2
attr DL2_WMZ2VT alias WMZ2 Vorlauftemperatur
attr DL2_WMZ2VT group Wärmemengenzähler 2 - DeltaSol M
attr DL2_WMZ2VT icon sani_supply_temp
attr DL2_WMZ2VT room AB-Pool,SolarThermie
attr DL2_WMZ2VT stateFormat {sprintf(\
"%.1f °C",\
ReadingsVal("$name","state",0))}

define DL2_WMZ2W readingsProxy DL2:W_2_MWh
attr DL2_WMZ2W alias WMZ2 Wärmeenergie
attr DL2_WMZ2W fp_SolarThermie 453,282,5,,
attr DL2_WMZ2W group Wärmemengenzähler 2 - DeltaSol M
attr DL2_WMZ2W icon sani_measure_power
attr DL2_WMZ2W room AB-Pool,SolarThermie
attr DL2_WMZ2W stateFormat state MWh
attr DL2_WMZ2W valueFn {sprintf("%.1f", $VALUE)}

define DL2_SZ readingsProxy DL2:SZ
attr DL2_SZ alias DeltaSol M
attr DL2_SZ group Geräte
attr DL2_SZ icon time_clock
attr DL2_SZ room SolarThermie

# -----------------------------------------------------------------------------------------------

#####################################
###       Trend Definitionen      ###
#####################################
define FileLog_DL2 FileLog /media/hdd/fhem/log01/resol/DL2-%Y-%m.log DL2
attr FileLog_DL2 alias Solaranlage
attr FileLog_DL2 logtype :,text
attr FileLog_DL2 room _LOG
# attr FileLog_DL2 logtype Temp4Einst4:Temp/Einst,text

define FileLog_DL2_T04k FileLog /media/hdd/fhem/log01/resol/DL2_T04k-%Y-%m.log DL2_T04k
attr FileLog_DL2_T04k alias S04 Pooltemperatur korrigiert
attr FileLog_DL2_T04k logtype temp4:Temp,text
attr FileLog_DL2_T04k room _LOG

define SVG_DL2Solar01 SVG FileLog_DL2:SVG_DL2Solar01:CURRENT
attr SVG_DL2Solar01 alias Heizung Solar Schichtspeicher
attr SVG_DL2Solar01 room SolarThermie

define SVG_DL2Solar02 SVG FileLog_DL2:SVG_DL2Solar02:CURRENT
attr SVG_DL2Solar02 alias Heizung Gaskessel
attr SVG_DL2Solar02 room SolarThermie

define SVG_DL2Solar03 SVG FileLog_DL2:SVG_DL2Solar03:CURRENT
attr SVG_DL2Solar03 alias Heizung Solar Pool
attr SVG_DL2Solar03 room SolarThermie

define SVG_DL2Solar04 SVG FileLog_DL2:SVG_DL2Solar04:CURRENT
attr SVG_DL2Solar04 alias Heizung Warmwasser
attr SVG_DL2Solar04 room SolarThermie

# -----------------------------------------------------------------------------------------------

Das mit verbose 5 lasse ich gerade laufen und liefer das log nach.
Siehe Anhang LOG.
Da es auf einer Testumgebung getestet wurde befinden sich zusätzliche Fehler im Log die mit dem Perl Warning des betreffend Config Auszug nichts zu tun haben.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 Juli 2016, 22:32:24
Hallo Chris,

die Warnungen, nach denen Du suchst, kommen in dem Log leider gar nicht vor.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 25 Juli 2016, 18:57:12
Ein aktueller Logauschnitt mit den Perl Warnungen.
2016.07.25 15:01:52 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:01:52 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:03:11 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:03:11 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:03:17 1: PERL WARNING: Useless use of private variable in void context at (eval 27895) line 1.
2016.07.25 15:03:17 1: PERL WARNING: Useless use of private variable in void context at (eval 27896) line 1.
2016.07.25 15:03:47 1: PERL WARNING: Useless use of private variable in void context at (eval 28230) line 1.
2016.07.25 15:03:47 1: PERL WARNING: Useless use of private variable in void context at (eval 28231) line 1.
2016.07.25 15:05:02 1: PERL WARNING: Useless use of private variable in void context at (eval 28944) line 1.
2016.07.25 15:05:02 1: PERL WARNING: Useless use of private variable in void context at (eval 28945) line 1.
2016.07.25 15:08:27 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:08:27 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:08:32 1: PERL WARNING: Useless use of private variable in void context at (eval 30999) line 1.
2016.07.25 15:08:32 1: PERL WARNING: Useless use of private variable in void context at (eval 31000) line 1.
2016.07.25 15:09:02 1: PERL WARNING: Useless use of private variable in void context at (eval 31289) line 1.
2016.07.25 15:09:02 1: PERL WARNING: Useless use of private variable in void context at (eval 31290) line 1.
2016.07.25 15:09:46 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:09:46 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:10:02 1: PERL WARNING: Useless use of private variable in void context at (eval 31853) line 1.
2016.07.25 15:10:02 1: PERL WARNING: Useless use of private variable in void context at (eval 31854) line 1.
2016.07.25 15:11:32 1: PERL WARNING: Useless use of private variable in void context at (eval 32624) line 1.
2016.07.25 15:11:32 1: PERL WARNING: Useless use of private variable in void context at (eval 32625) line 1.
2016.07.25 15:12:32 1: PERL WARNING: Useless use of private variable in void context at (eval 33098) line 1.
2016.07.25 15:12:32 1: PERL WARNING: Useless use of private variable in void context at (eval 33099) line 1.
2016.07.25 15:13:43 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:13:43 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:14:17 1: PERL WARNING: Useless use of private variable in void context at (eval 34065) line 1.
2016.07.25 15:14:17 1: PERL WARNING: Useless use of private variable in void context at (eval 34066) line 1.
2016.07.25 15:14:32 1: PERL WARNING: Useless use of private variable in void context at (eval 34143) line 1.
2016.07.25 15:14:32 1: PERL WARNING: Useless use of private variable in void context at (eval 34144) line 1.
2016.07.25 15:14:47 1: PERL WARNING: Useless use of private variable in void context at (eval 34374) line 1.
2016.07.25 15:14:47 1: PERL WARNING: Useless use of private variable in void context at (eval 34375) line 1.
2016.07.25 15:14:56 2: CUL_TX F CUL_TX_127 127 (XFFFFFFFFFFC) unknown type
2016.07.25 15:15:00 2: IT set Freigabe_HZ_Pool off
2016.07.25 15:15:32 3: FS20 set L_OG1_WZ_Blume on
2016.07.25 15:16:21 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:16:21 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:17:17 1: PERL WARNING: Useless use of private variable in void context at (eval 35638) line 1.
2016.07.25 15:17:17 1: PERL WARNING: Useless use of private variable in void context at (eval 35639) line 1.
2016.07.25 15:17:40 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:17:40 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:18:02 1: PERL WARNING: Useless use of private variable in void context at (eval 35957) line 1.
2016.07.25 15:18:02 1: PERL WARNING: Useless use of private variable in void context at (eval 35958) line 1.
2016.07.25 15:18:51 3: IT_11011001 Unknown, Please learn codes!->Unknown, Please learn codes!
2016.07.25 15:18:52 3: IT_F00F000F0F off->on
2016.07.25 15:18:52 3: IT_11000111100011110001111000101101100110011011001001011 off->on
2016.07.25 15:18:58 3: IT_11011001 Unknown, Please learn codes!->Unknown, Please learn codes!
2016.07.25 15:18:58 3: IT_F00F000F0F on->off
2016.07.25 15:18:59 3: IT_11000111100011110001111000101101100110011011001001011 on->off
2016.07.25 15:19:35 1: PERL WARNING: Useless use of private variable in void context at (eval 36719) line 1.
2016.07.25 15:19:35 1: PERL WARNING: Useless use of private variable in void context at (eval 36723) line 1.
2016.07.25 15:21:52 1: Hideki: UNDEFINED sensor 30 detected, code Hideki_30_6
2016.07.25 15:22:57 3: IT_11011001 Unknown, Please learn codes!->Unknown, Please learn codes!
2016.07.25 15:22:57 3: IT_0000000000010010110101010000001 on->on
2016.07.25 15:22:58 3: IT_0000000000010010110101010000001 on->on
2016.07.25 15:22:58 3: IT_11000111100011110010111001101100100110101011001001011 off->on
2016.07.25 15:22:58 3: IT_11011001 Unknown, Please learn codes!->Unknown, Please learn codes!
2016.07.25 15:22:58 3: IT_F00F000F0F off->on
2016.07.25 15:22:59 3: IT_F00F000F0F on->on
2016.07.25 15:22:59 3: IT_11000111100011110001111000101101100110011011001001011 off->on
2016.07.25 15:23:23 3: IT_F000000F0F off->on
2016.07.25 15:23:24 3: IT_11000111100011110001111001110100111010001111001001011 off->on
2016.07.25 15:23:32 1: PERL WARNING: Useless use of private variable in void context at (eval 38643) line 1.
2016.07.25 15:23:32 1: PERL WARNING: Useless use of private variable in void context at (eval 38644) line 1.
2016.07.25 15:24:02 1: PERL WARNING: Useless use of private variable in void context at (eval 38888) line 1.
2016.07.25 15:24:02 1: PERL WARNING: Useless use of private variable in void context at (eval 38889) line 1.
2016.07.25 15:24:18 1: PERL WARNING: Useless use of private variable in void context at (eval 39164) line 1.
2016.07.25 15:24:18 1: PERL WARNING: Useless use of private variable in void context at (eval 39165) line 1.
2016.07.25 15:25:34 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:25:34 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:28:07 2: autocreate: define FileLog_THWR800_3 FileLog /media/hdd/fhem/log01/THWR800_3-%Y.log THWR800_3
2016.07.25 15:30:48 3: FS20 set L_OG1_WZ_Blume off
2016.07.25 15:31:09 2: autocreate: define FileLog_THGR810_1 FileLog /media/hdd/fhem/log01/THGR810_1-%Y.log THGR810_1
2016.07.25 15:31:09 2: autocreate: define SVG_THGR810_1 SVG FileLog_THGR810_1:temp4hum4:CURRENT
2016.07.25 15:31:48 1: PERL WARNING: Useless use of private variable in void context at (eval 42937) line 1.
2016.07.25 15:31:48 1: PERL WARNING: Useless use of private variable in void context at (eval 42938) line 1.
2016.07.25 15:36:06 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:36:06 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:38:17 2: autocreate: define FileLog_THWR800_3 FileLog /media/hdd/fhem/log01/THWR800_3-%Y.log THWR800_3
2016.07.25 15:40:38 2: autocreate: define FileLog_THGR810_2 FileLog /media/hdd/fhem/log01/THGR810_2-%Y.log THGR810_2
2016.07.25 15:40:38 2: autocreate: define SVG_THGR810_2 SVG FileLog_THGR810_2:temp4hum4:CURRENT
2016.07.25 15:42:18 1: PERL WARNING: Useless use of private variable in void context at (eval 48150) line 1.
2016.07.25 15:42:18 1: PERL WARNING: Useless use of private variable in void context at (eval 48151) line 1.
2016.07.25 15:43:08 1: PERL WARNING: Useless use of private variable in void context at (eval 48571) line 1.
2016.07.25 15:43:09 1: PERL WARNING: Useless use of private variable in void context at (eval 48575) line 1.
2016.07.25 15:44:18 1: PERL WARNING: Useless use of private variable in void context at (eval 49231) line 1.
2016.07.25 15:44:18 1: PERL WARNING: Useless use of private variable in void context at (eval 49232) line 1.
2016.07.25 15:45:33 1: PERL WARNING: Useless use of private variable in void context at (eval 49881) line 1.
2016.07.25 15:45:33 1: PERL WARNING: Useless use of private variable in void context at (eval 49882) line 1.
2016.07.25 15:46:38 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:46:38 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:50:35 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:50:35 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:53:04 1: PERL WARNING: Useless use of private variable in void context at (eval 53756) line 1.
2016.07.25 15:53:04 1: PERL WARNING: Useless use of private variable in void context at (eval 53757) line 1.
2016.07.25 15:53:19 1: PERL WARNING: Useless use of private variable in void context at (eval 53978) line 1.
2016.07.25 15:53:19 1: PERL WARNING: Useless use of private variable in void context at (eval 53979) line 1.
2016.07.25 15:53:34 1: PERL WARNING: Useless use of private variable in void context at (eval 54096) line 1.
2016.07.25 15:53:34 1: PERL WARNING: Useless use of private variable in void context at (eval 54097) line 1.
2016.07.25 15:53:49 1: PERL WARNING: Useless use of private variable in void context at (eval 54315) line 1.
2016.07.25 15:53:49 1: PERL WARNING: Useless use of private variable in void context at (eval 54316) line 1.
2016.07.25 15:54:04 1: PERL WARNING: Useless use of private variable in void context at (eval 54408) line 1.
2016.07.25 15:54:04 1: PERL WARNING: Useless use of private variable in void context at (eval 54409) line 1.
2016.07.25 15:54:19 1: PERL WARNING: Useless use of private variable in void context at (eval 54621) line 1.
2016.07.25 15:54:19 1: PERL WARNING: Useless use of private variable in void context at (eval 54622) line 1.
2016.07.25 15:54:32 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:54:32 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 15:55:04 1: PERL WARNING: Useless use of private variable in void context at (eval 54965) line 1.
2016.07.25 15:55:04 1: PERL WARNING: Useless use of private variable in void context at (eval 54966) line 1.
2016.07.25 15:57:10 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 15:57:10 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:00:00 3: FS20 set L_OG1_WZ_Aqua on
2016.07.25 16:00:04 1: PERL WARNING: Useless use of private variable in void context at (eval 57691) line 1.
2016.07.25 16:00:04 1: PERL WARNING: Useless use of private variable in void context at (eval 57692) line 1.
2016.07.25 16:03:15 2: autocreate: define FileLog_THGR810_2 FileLog /media/hdd/fhem/log01/THGR810_2-%Y.log THGR810_2
2016.07.25 16:03:15 2: autocreate: define SVG_THGR810_2 SVG FileLog_THGR810_2:temp4hum4:CURRENT
2016.07.25 16:04:22 1: PERL WARNING: Useless use of private variable in void context at (eval 60630) line 1.
2016.07.25 16:04:23 1: PERL WARNING: Useless use of private variable in void context at (eval 60634) line 1.
2016.07.25 16:05:04 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:05:04 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:05:19 1: PERL WARNING: Useless use of private variable in void context at (eval 61264) line 1.
2016.07.25 16:05:19 1: PERL WARNING: Useless use of private variable in void context at (eval 61265) line 1.
2016.07.25 16:05:34 1: PERL WARNING: Useless use of private variable in void context at (eval 61418) line 1.
2016.07.25 16:05:34 1: PERL WARNING: Useless use of private variable in void context at (eval 61419) line 1.
2016.07.25 16:05:49 1: PERL WARNING: Useless use of private variable in void context at (eval 61611) line 1.
2016.07.25 16:05:49 1: PERL WARNING: Useless use of private variable in void context at (eval 61612) line 1.
2016.07.25 16:06:23 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:06:23 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:07:42 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:07:42 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:09:19 1: PERL WARNING: Useless use of private variable in void context at (eval 63857) line 1.
2016.07.25 16:09:19 1: PERL WARNING: Useless use of private variable in void context at (eval 63858) line 1.
2016.07.25 16:10:49 1: PERL WARNING: Useless use of private variable in void context at (eval 64860) line 1.
2016.07.25 16:10:49 1: PERL WARNING: Useless use of private variable in void context at (eval 64861) line 1.
2016.07.25 16:12:58 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:12:58 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:13:50 1: PERL WARNING: Useless use of private variable in void context at (eval 66791) line 1.
2016.07.25 16:13:50 1: PERL WARNING: Useless use of private variable in void context at (eval 66792) line 1.
2016.07.25 16:15:50 1: PERL WARNING: Useless use of private variable in void context at (eval 68021) line 1.
2016.07.25 16:15:50 1: PERL WARNING: Useless use of private variable in void context at (eval 68022) line 1.
2016.07.25 16:17:50 1: PERL WARNING: Useless use of private variable in void context at (eval 69277) line 1.
2016.07.25 16:17:50 1: PERL WARNING: Useless use of private variable in void context at (eval 69278) line 1.
2016.07.25 16:18:14 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:18:14 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:20:20 1: PERL WARNING: Useless use of private variable in void context at (eval 70875) line 1.
2016.07.25 16:20:20 1: PERL WARNING: Useless use of private variable in void context at (eval 70876) line 1.
2016.07.25 16:20:35 1: PERL WARNING: Useless use of private variable in void context at (eval 71007) line 1.
2016.07.25 16:20:35 1: PERL WARNING: Useless use of private variable in void context at (eval 71008) line 1.
2016.07.25 16:20:52 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:20:52 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:21:05 1: PERL WARNING: Useless use of private variable in void context at (eval 71328) line 1.
2016.07.25 16:21:05 1: PERL WARNING: Useless use of private variable in void context at (eval 71329) line 1.
2016.07.25 16:25:09 1: PERL WARNING: Useless use of private variable in void context at (eval 73736) line 1.
2016.07.25 16:25:09 1: PERL WARNING: Useless use of private variable in void context at (eval 73740) line 1.
2016.07.25 16:25:20 1: sendEmail RCP: christian.schmidt@ccs-media.at
2016.07.25 16:25:20 1: sendEmail Subject: FHEM - Solaranlage R5 keine Strömung: R5A
2016.07.25 16:25:20 1: sendEmail Text:
2016.07.25 16:25:20 1: sendEmail Anhang:
2016.07.25 16:25:21 1: sendEmail returned: Reading message body from STDIN because the '-m' option was not used.If you are manually typing in a message:  - First line must be received within 60 seconds.  - End manual input with a CTRL-D on its own line.Jul 25 16:25:21 ccs-ht-rasp01 sendEmail[19334]: Message input complete.Jul 25 16:25:21 ccs-ht-rasp01 sendEmail[19334]: Email was sent successfully!
2016.07.25 16:25:50 1: PERL WARNING: Useless use of private variable in void context at (eval 74225) line 1.
2016.07.25 16:25:50 1: PERL WARNING: Useless use of private variable in void context at (eval 74226) line 1.
2016.07.25 16:27:20 1: PERL WARNING: Useless use of private variable in void context at (eval 75190) line 1.
2016.07.25 16:27:20 1: PERL WARNING: Useless use of private variable in void context at (eval 75191) line 1.
2016.07.25 16:27:35 1: PERL WARNING: Useless use of private variable in void context at (eval 75363) line 1.
2016.07.25 16:27:35 1: PERL WARNING: Useless use of private variable in void context at (eval 75364) line 1.
2016.07.25 16:29:35 1: PERL WARNING: Useless use of private variable in void context at (eval 76612) line 1.
2016.07.25 16:29:35 1: PERL WARNING: Useless use of private variable in void context at (eval 76613) line 1.
2016.07.25 16:30:35 1: PERL WARNING: Useless use of private variable in void context at (eval 77214) line 1.
2016.07.25 16:30:35 1: PERL WARNING: Useless use of private variable in void context at (eval 77215) line 1.
2016.07.25 16:32:55 3: FS20 set L_OG1_WZ_EN off
2016.07.25 16:33:07 3: FS20 set R_OG1_WZ on
2016.07.25 16:33:36 3: FS20 set R_OG1_WZ off
2016.07.25 16:33:45 3: FS20 set R_OG1_WZ off
2016.07.25 16:34:02 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:34:02 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:35:00 1: PERL WARNING: Useless use of private variable in void context at (eval 80001) line 1.
2016.07.25 16:36:06 1: PERL WARNING: Useless use of private variable in void context at (eval 80621) line 1.
2016.07.25 16:36:06 1: PERL WARNING: Useless use of private variable in void context at (eval 80622) line 1.
2016.07.25 16:36:40 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:36:40 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:39:06 1: PERL WARNING: Useless use of private variable in void context at (eval 82628) line 1.
2016.07.25 16:39:06 1: PERL WARNING: Useless use of private variable in void context at (eval 82629) line 1.
2016.07.25 16:40:06 1: PERL WARNING: Useless use of private variable in void context at (eval 83337) line 1.
2016.07.25 16:40:06 1: PERL WARNING: Useless use of private variable in void context at (eval 83338) line 1.
2016.07.25 16:41:19 2: autocreate: define FileLog_THWR800_3 FileLog /media/hdd/fhem/log01/THWR800_3-%Y.log THWR800_3
2016.07.25 16:41:21 1: PERL WARNING: Useless use of private variable in void context at (eval 84167) line 1.
2016.07.25 16:41:21 1: PERL WARNING: Useless use of private variable in void context at (eval 84168) line 1.
2016.07.25 16:42:37 1: sendEmail RCP: christian.schmidt@ccs-media.at
2016.07.25 16:42:37 1: sendEmail Subject: FHEM - Solaranlage R5 keine Strömung: R5A
2016.07.25 16:42:37 1: sendEmail Text:
2016.07.25 16:42:37 1: sendEmail Anhang:
2016.07.25 16:42:38 1: sendEmail returned: Reading message body from STDIN because the '-m' option was not used.If you are manually typing in a message:  - First line must be received within 60 seconds.  - End manual input with a CTRL-D on its own line.Jul 25 16:42:37 ccs-ht-rasp01 sendEmail[19502]: Message input complete.Jul 25 16:42:38 ccs-ht-rasp01 sendEmail[19502]: Email was sent successfully!
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 168.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 171.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 174.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 179.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 182.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 185.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 191.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in string eq at ./FHEM/14_SD_AS.pm line 196.
2016.07.25 16:43:15 1: PERL WARNING: Use of uninitialized value $model in concatenation (.) or string at ./FHEM/14_SD_AS.pm line 199.
2016.07.25 16:45:27 1: PERL WARNING: Useless use of private variable in void context at (eval 86661) line 1.
2016.07.25 16:45:27 1: PERL WARNING: Useless use of private variable in void context at (eval 86665) line 1.
2016.07.25 16:45:53 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:45:53 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:47:12 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:47:12 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:48:06 1: PERL WARNING: Useless use of private variable in void context at (eval 88288) line 1.
2016.07.25 16:48:06 1: PERL WARNING: Useless use of private variable in void context at (eval 88289) line 1.
2016.07.25 16:48:22 1: PERL WARNING: Useless use of private variable in void context at (eval 88473) line 1.
2016.07.25 16:48:22 1: PERL WARNING: Useless use of private variable in void context at (eval 88474) line 1.
2016.07.25 16:48:22 1: sendEmail RCP: christian.schmidt@ccs-media.at
2016.07.25 16:48:22 1: sendEmail Subject: FHEM - Solaranlage R5 keine Strömung: R5A
2016.07.25 16:48:22 1: sendEmail Text:
2016.07.25 16:48:22 1: sendEmail Anhang:
2016.07.25 16:48:23 1: sendEmail returned: Reading message body from STDIN because the '-m' option was not used.If you are manually typing in a message:  - First line must be received within 60 seconds.  - End manual input with a CTRL-D on its own line.Jul 25 16:48:22 ccs-ht-rasp01 sendEmail[19567]: Message input complete.Jul 25 16:48:23 ccs-ht-rasp01 sendEmail[19567]: Email was sent successfully!
2016.07.25 16:49:52 1: PERL WARNING: Useless use of private variable in void context at (eval 89328) line 1.
2016.07.25 16:49:52 1: PERL WARNING: Useless use of private variable in void context at (eval 89329) line 1.
2016.07.25 16:51:07 1: PERL WARNING: Useless use of private variable in void context at (eval 90098) line 1.
2016.07.25 16:51:07 1: PERL WARNING: Useless use of private variable in void context at (eval 90099) line 1.
2016.07.25 16:51:22 1: PERL WARNING: Useless use of private variable in void context at (eval 90311) line 1.
2016.07.25 16:51:22 1: PERL WARNING: Useless use of private variable in void context at (eval 90312) line 1.
2016.07.25 16:54:52 1: PERL WARNING: Useless use of private variable in void context at (eval 92328) line 1.
2016.07.25 16:54:52 1: PERL WARNING: Useless use of private variable in void context at (eval 92329) line 1.
2016.07.25 16:55:05 2: autocreate: define FileLog_WGR800 FileLog /media/hdd/fhem/log01/WGR800-%Y.log WGR800
2016.07.25 16:55:05 2: autocreate: define SVG_WGR800 SVG FileLog_WGR800:wind4windDir4:CURRENT
2016.07.25 16:55:07 1: PERL WARNING: Useless use of private variable in void context at (eval 92500) line 1.
2016.07.25 16:55:07 1: PERL WARNING: Useless use of private variable in void context at (eval 92501) line 1.
2016.07.25 16:55:22 1: PERL WARNING: Useless use of private variable in void context at (eval 92680) line 1.
2016.07.25 16:55:22 1: PERL WARNING: Useless use of private variable in void context at (eval 92681) line 1.
2016.07.25 16:55:33 2: autocreate: define FileLog_THWR800_3 FileLog /media/hdd/fhem/log01/THWR800_3-%Y.log THWR800_3
2016.07.25 16:55:37 1: PERL WARNING: Useless use of private variable in void context at (eval 92852) line 1.
2016.07.25 16:55:37 1: PERL WARNING: Useless use of private variable in void context at (eval 92853) line 1.
2016.07.25 16:56:25 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:56:25 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:57:20 2: autocreate: define FileLog_THGR810_2 FileLog /media/hdd/fhem/log01/THGR810_2-%Y.log THGR810_2
2016.07.25 16:57:20 2: autocreate: define SVG_THGR810_2 SVG FileLog_THGR810_2:temp4hum4:CURRENT
2016.07.25 16:57:44 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 16:57:44 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 16:58:22 1: PERL WARNING: Useless use of private variable in void context at (eval 94766) line 1.
2016.07.25 16:58:22 1: PERL WARNING: Useless use of private variable in void context at (eval 94767) line 1.
2016.07.25 16:58:38 1: PERL WARNING: Useless use of private variable in void context at (eval 94959) line 1.
2016.07.25 16:58:38 1: PERL WARNING: Useless use of private variable in void context at (eval 94960) line 1.
2016.07.25 16:58:41 3: R_EG_WZ AUF->on
2016.07.25 16:59:02 3: R_EG_KUE AUF->on
2016.07.25 16:59:03 3: R_EG_KUE_TER AUF->on
2016.07.25 16:59:03 3: R_EG_WI AUF->on
2016.07.25 16:59:15 3: R_EG_KUE_TER AUF->on
2016.07.25 16:59:27 3: R_EG_WZ AUF->on
2016.07.25 16:59:27 3: R_EG_KUE AUF->on
2016.07.25 16:59:28 3: R_EG_KUE_TER AUF->on
2016.07.25 16:59:28 3: R_EG_WI AUF->on
2016.07.25 16:59:44 2: autocreate: define TRX_ARC_A14 TRX_LIGHT ARC A14 light
2016.07.25 16:59:44 2: autocreate: define FileLog_TRX_ARC_A14 FileLog /media/hdd/fhem/log01/TRX_ARC_A14-%Y.log TRX_ARC_A14
2016.07.25 16:59:44 2: autocreate: define IT_0000F0FF0F IT 0000F0FF0F FF F0
2016.07.25 16:59:45 2: autocreate: define FileLog_IT_0000F0FF0F FileLog /media/hdd/fhem/log01/IT_0000F0FF0F-%Y.log IT_0000F0FF0F
2016.07.25 16:59:45 3: IT_0000F0FF0F ???->on
2016.07.25 16:59:45 2: autocreate: define TRX_ARC_A13 TRX_LIGHT ARC A13 light
2016.07.25 16:59:46 2: autocreate: define FileLog_TRX_ARC_A13 FileLog /media/hdd/fhem/log01/TRX_ARC_A13-%Y.log TRX_ARC_A13
2016.07.25 16:59:46 2: autocreate: define IT_000000FF0F IT 000000FF0F FF F0
2016.07.25 16:59:46 2: autocreate: define FileLog_IT_000000FF0F FileLog /media/hdd/fhem/log01/IT_000000FF0F-%Y.log IT_000000FF0F
2016.07.25 16:59:47 3: IT_0000F0FF0F on->on
2016.07.25 16:59:47 2: autocreate: define IT_00000FFF0F IT 00000FFF0F FF F0
2016.07.25 16:59:47 2: autocreate: define FileLog_IT_00000FFF0F FileLog /media/hdd/fhem/log01/IT_00000FFF0F-%Y.log IT_00000FFF0F
2016.07.25 16:59:48 2: autocreate: define TRX_ARC_A16 TRX_LIGHT ARC A16 light
2016.07.25 16:59:48 2: autocreate: define FileLog_TRX_ARC_A16 FileLog /media/hdd/fhem/log01/TRX_ARC_A16-%Y.log TRX_ARC_A16
2016.07.25 16:59:48 2: autocreate: define TRX_ARC_A15 TRX_LIGHT ARC A15 light
2016.07.25 16:59:48 2: autocreate: define FileLog_TRX_ARC_A15 FileLog /media/hdd/fhem/log01/TRX_ARC_A15-%Y.log TRX_ARC_A15
2016.07.25 16:59:49 2: autocreate: define IT_0000FFFF0F IT 0000FFFF0F FF F0
2016.07.25 16:59:49 2: autocreate: define FileLog_IT_0000FFFF0F FileLog /media/hdd/fhem/log01/IT_0000FFFF0F-%Y.log IT_0000FFFF0F
2016.07.25 16:59:50 3: IT_000000FF0F ???->on
2016.07.25 16:59:50 3: IT_0000F0FF0F on->on
2016.07.25 16:59:50 3: IT_00000FFF0F ???->on
2016.07.25 16:59:50 3: IT_0000FFFF0F ???->on
2016.07.25 16:59:54 3: IT_000000FF0F on->off
2016.07.25 17:00:23 2: autocreate: define FileLog_THGR810_1 FileLog /media/hdd/fhem/log01/THGR810_1-%Y.log THGR810_1
2016.07.25 17:00:23 2: autocreate: define SVG_THGR810_1 SVG FileLog_THGR810_1:temp4hum4:CURRENT
2016.07.25 17:01:23 1: PERL WARNING: Useless use of private variable in void context at (eval 96599) line 1.
2016.07.25 17:01:23 1: PERL WARNING: Useless use of private variable in void context at (eval 96600) line 1.
2016.07.25 17:01:23 1: sendEmail RCP: christian.schmidt@ccs-media.at
2016.07.25 17:01:23 1: sendEmail Subject: FHEM - Solaranlage R5 keine Strömung: R5A
2016.07.25 17:01:23 1: sendEmail Text:
2016.07.25 17:01:23 1: sendEmail Anhang:
2016.07.25 17:01:24 1: sendEmail returned: Reading message body from STDIN because the '-m' option was not used.If you are manually typing in a message:  - First line must be received within 60 seconds.  - End manual input with a CTRL-D on its own line.Jul 25 17:01:23 ccs-ht-rasp01 sendEmail[19684]: Message input complete.Jul 25 17:01:24 ccs-ht-rasp01 sendEmail[19684]: Email was sent successfully!
2016.07.25 17:01:38 1: PERL WARNING: Useless use of private variable in void context at (eval 96760) line 1.
2016.07.25 17:01:38 1: PERL WARNING: Useless use of private variable in void context at (eval 96761) line 1.
2016.07.25 17:01:53 1: PERL WARNING: Useless use of private variable in void context at (eval 96960) line 1.
2016.07.25 17:01:53 1: PERL WARNING: Useless use of private variable in void context at (eval 96961) line 1.
2016.07.25 17:02:07 1: PERL WARNING: Useless use of private variable in void context at (eval 97082) line 1.
2016.07.25 17:02:07 1: PERL WARNING: Useless use of private variable in void context at (eval 97083) line 1.
2016.07.25 17:02:46 3: FS20 set Freigabe_OG1_GS off
2016.07.25 17:05:45 1: PERL WARNING: Useless use of private variable in void context at (eval 99432) line 1.
2016.07.25 17:05:45 1: PERL WARNING: Useless use of private variable in void context at (eval 99436) line 1.
2016.07.25 17:06:11 2: autocreate: define FileLog_THGR810_2 FileLog /media/hdd/fhem/log01/THGR810_2-%Y.log THGR810_2
2016.07.25 17:06:11 2: autocreate: define SVG_THGR810_2 SVG FileLog_THGR810_2:temp4hum4:CURRENT
2016.07.25 17:06:38 1: PERL WARNING: Useless use of private variable in void context at (eval 99986) line 1.
2016.07.25 17:06:38 1: PERL WARNING: Useless use of private variable in void context at (eval 99987) line 1.
2016.07.25 17:06:57 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 17:06:57 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 17:07:27 2: autocreate: define FileLog_WGR800 FileLog /media/hdd/fhem/log01/WGR800-%Y.log WGR800
2016.07.25 17:07:27 2: autocreate: define SVG_WGR800 SVG FileLog_WGR800:wind4windDir4:CURRENT
2016.07.25 17:08:16 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 17:08:16 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 17:08:38 1: PERL WARNING: Useless use of private variable in void context at (eval 101129) line 1.
2016.07.25 17:08:38 1: PERL WARNING: Useless use of private variable in void context at (eval 101130) line 1.
2016.07.25 17:08:53 1: PERL WARNING: Useless use of private variable in void context at (eval 101325) line 1.
2016.07.25 17:08:53 1: PERL WARNING: Useless use of private variable in void context at (eval 101326) line 1.
2016.07.25 17:10:53 1: PERL WARNING: Useless use of private variable in void context at (eval 102438) line 1.
2016.07.25 17:10:53 1: PERL WARNING: Useless use of private variable in void context at (eval 102439) line 1.
2016.07.25 17:11:08 1: PERL WARNING: Useless use of private variable in void context at (eval 102594) line 1.
2016.07.25 17:11:08 1: PERL WARNING: Useless use of private variable in void context at (eval 102595) line 1.
2016.07.25 17:11:39 2: autocreate: define FileLog_PCR800 FileLog /media/hdd/fhem/log01/PCR800-%Y.log PCR800
2016.07.25 17:11:39 2: autocreate: define SVG_PCR800 SVG FileLog_PCR800:rain4:CURRENT
2016.07.25 17:14:03 2: autocreate: define FileLog_THGR810_2 FileLog /media/hdd/fhem/log01/THGR810_2-%Y.log THGR810_2
2016.07.25 17:14:03 2: autocreate: define SVG_THGR810_2 SVG FileLog_THGR810_2:temp4hum4:CURRENT
2016.07.25 17:17:23 1: PERL WARNING: Useless use of private variable in void context at (eval 106029) line 1.
2016.07.25 17:17:23 1: PERL WARNING: Useless use of private variable in void context at (eval 106030) line 1.
2016.07.25 17:20:08 1: PERL WARNING: Useless use of private variable in void context at (eval 107445) line 1.
2016.07.25 17:20:08 1: PERL WARNING: Useless use of private variable in void context at (eval 107446) line 1.
2016.07.25 17:21:49 1: PERL WARNING: Use of uninitialized value $newstate in concatenation (.) or string at ./FHEM/98_Dooya.pm line 320.
2016.07.25 17:22:38 1: PERL WARNING: Useless use of private variable in void context at (eval 108707) line 1.
2016.07.25 17:22:38 1: PERL WARNING: Useless use of private variable in void context at (eval 108708) line 1.
2016.07.25 17:23:08 1: PERL WARNING: Useless use of private variable in void context at (eval 108982) line 1.
2016.07.25 17:23:08 1: PERL WARNING: Useless use of private variable in void context at (eval 108983) line 1.
2016.07.25 17:24:23 1: PERL WARNING: Useless use of private variable in void context at (eval 109732) line 1.
2016.07.25 17:24:23 1: PERL WARNING: Useless use of private variable in void context at (eval 109733) line 1.
2016.07.25 17:25:48 1: PERL WARNING: Useless use of private variable in void context at (eval 110377) line 1.
2016.07.25 17:25:49 1: PERL WARNING: Useless use of private variable in void context at (eval 110383) line 1.
2016.07.25 17:26:03 2: autocreate: define FileLog_THWR800_3 FileLog /media/hdd/fhem/log01/THWR800_3-%Y.log THWR800_3
2016.07.25 17:26:53 1: PERL WARNING: Useless use of private variable in void context at (eval 110985) line 1.
2016.07.25 17:26:53 1: PERL WARNING: Useless use of private variable in void context at (eval 110986) line 1.
2016.07.25 17:27:11 1: PERL WARNING: Useless use of private variable in void context at (eval 111134) line 1.
2016.07.25 17:27:11 1: PERL WARNING: Useless use of private variable in void context at (eval 111135) line 1.
2016.07.25 17:27:12 1: PERL WARNING: Useless use of private variable in void context at (eval 111179) line 1.
2016.07.25 17:27:12 1: PERL WARNING: Useless use of private variable in void context at (eval 111180) line 1.
2016.07.25 17:27:41 1: PERL WARNING: Useless use of private variable in void context at (eval 111448) line 1.
2016.07.25 17:27:41 1: PERL WARNING: Useless use of private variable in void context at (eval 111449) line 1.
2016.07.25 17:27:42 1: PERL WARNING: Useless use of private variable in void context at (eval 111519) line 1.
2016.07.25 17:27:42 1: PERL WARNING: Useless use of private variable in void context at (eval 111520) line 1.
2016.07.25 17:27:45 2: autocreate: define FileLog_THGR810_1 FileLog /media/hdd/fhem/log01/THGR810_1-%Y.log THGR810_1
2016.07.25 17:27:45 2: autocreate: define SVG_THGR810_1 SVG FileLog_THGR810_1:temp4hum4:CURRENT
2016.07.25 17:28:05 1: PERL WARNING: Useless use of private variable in void context at (eval 111791) line 1.
2016.07.25 17:28:05 1: PERL WARNING: Useless use of private variable in void context at (eval 111792) line 1.
2016.07.25 17:28:06 1: PERL WARNING: Useless use of private variable in void context at (eval 111862) line 1.
2016.07.25 17:28:06 1: PERL WARNING: Useless use of private variable in void context at (eval 111863) line 1.
2016.07.25 17:28:23 1: PERL WARNING: Useless use of private variable in void context at (eval 112090) line 1.
2016.07.25 17:28:23 1: PERL WARNING: Useless use of private variable in void context at (eval 112091) line 1.
2016.07.25 17:28:29 1: PERL WARNING: Useless use of private variable in void context at (eval 112155) line 1.
2016.07.25 17:28:29 1: PERL WARNING: Useless use of private variable in void context at (eval 112156) line 1.
2016.07.25 17:28:30 1: PERL WARNING: Useless use of private variable in void context at (eval 112226) line 1.
2016.07.25 17:28:30 1: PERL WARNING: Useless use of private variable in void context at (eval 112227) line 1.
2016.07.25 17:28:53 1: PERL WARNING: Useless use of private variable in void context at (eval 112500) line 1.
2016.07.25 17:28:53 1: PERL WARNING: Useless use of private variable in void context at (eval 112501) line 1.
2016.07.25 17:28:54 1: PERL WARNING: Useless use of private variable in void context at (eval 112571) line 1.
2016.07.25 17:28:54 1: PERL WARNING: Useless use of private variable in void context at (eval 112572) line 1.
2016.07.25 17:29:08 1: PERL WARNING: Useless use of private variable in void context at (eval 112715) line 1.
2016.07.25 17:29:08 1: PERL WARNING: Useless use of private variable in void context at (eval 112716) line 1.
2016.07.25 17:29:17 1: PERL WARNING: Useless use of private variable in void context at (eval 112790) line 1.
2016.07.25 17:29:17 1: PERL WARNING: Useless use of private variable in void context at (eval 112791) line 1.
2016.07.25 17:29:18 1: PERL WARNING: Useless use of private variable in void context at (eval 112861) line 1.
2016.07.25 17:29:18 1: PERL WARNING: Useless use of private variable in void context at (eval 112862) line 1.
2016.07.25 17:29:23 1: PERL WARNING: Useless use of private variable in void context at (eval 113022) line 1.
2016.07.25 17:29:23 1: PERL WARNING: Useless use of private variable in void context at (eval 113023) line 1.
2016.07.25 17:29:41 1: PERL WARNING: Useless use of private variable in void context at (eval 113165) line 1.
2016.07.25 17:29:41 1: PERL WARNING: Useless use of private variable in void context at (eval 113166) line 1.
2016.07.25 17:29:42 1: PERL WARNING: Useless use of private variable in void context at (eval 113236) line 1.
2016.07.25 17:29:42 1: PERL WARNING: Useless use of private variable in void context at (eval 113237) line 1.
2016.07.25 17:30:05 1: PERL WARNING: Useless use of private variable in void context at (eval 113498) line 1.
2016.07.25 17:30:05 1: PERL WARNING: Useless use of private variable in void context at (eval 113499) line 1.
2016.07.25 17:30:06 1: PERL WARNING: Useless use of private variable in void context at (eval 113569) line 1.
2016.07.25 17:30:06 1: PERL WARNING: Useless use of private variable in void context at (eval 113570) line 1.
2016.07.25 17:30:29 1: PERL WARNING: Useless use of private variable in void context at (eval 113803) line 1.
2016.07.25 17:30:29 1: PERL WARNING: Useless use of private variable in void context at (eval 113804) line 1.
2016.07.25 17:30:30 1: PERL WARNING: Useless use of private variable in void context at (eval 113874) line 1.
2016.07.25 17:30:30 1: PERL WARNING: Useless use of private variable in void context at (eval 113875) line 1.
2016.07.25 17:30:53 1: PERL WARNING: Useless use of private variable in void context at (eval 114105) line 1.
2016.07.25 17:30:53 1: PERL WARNING: Useless use of private variable in void context at (eval 114106) line 1.
2016.07.25 17:30:54 1: PERL WARNING: Useless use of private variable in void context at (eval 114176) line 1.
2016.07.25 17:30:54 1: PERL WARNING: Useless use of private variable in void context at (eval 114177) line 1.
2016.07.25 17:31:17 1: PERL WARNING: Useless use of private variable in void context at (eval 114400) line 1.
2016.07.25 17:31:17 1: PERL WARNING: Useless use of private variable in void context at (eval 114401) line 1.
2016.07.25 17:31:18 1: PERL WARNING: Useless use of private variable in void context at (eval 114471) line 1.
2016.07.25 17:31:18 1: PERL WARNING: Useless use of private variable in void context at (eval 114472) line 1.
2016.07.25 17:31:41 1: PERL WARNING: Useless use of private variable in void context at (eval 114784) line 1.
2016.07.25 17:31:41 1: PERL WARNING: Useless use of private variable in void context at (eval 114785) line 1.
2016.07.25 17:31:42 1: PERL WARNING: Useless use of private variable in void context at (eval 114855) line 1.
2016.07.25 17:31:42 1: PERL WARNING: Useless use of private variable in void context at (eval 114856) line 1.
2016.07.25 17:32:05 1: PERL WARNING: Useless use of private variable in void context at (eval 115130) line 1.
2016.07.25 17:32:05 1: PERL WARNING: Useless use of private variable in void context at (eval 115131) line 1.
2016.07.25 17:32:06 1: PERL WARNING: Useless use of private variable in void context at (eval 115201) line 1.
2016.07.25 17:32:06 1: PERL WARNING: Useless use of private variable in void context at (eval 115202) line 1.
2016.07.25 17:32:24 1: PERL WARNING: Useless use of private variable in void context at (eval 115433) line 1.
2016.07.25 17:32:24 1: PERL WARNING: Useless use of private variable in void context at (eval 115434) line 1.
2016.07.25 17:32:29 1: PERL WARNING: Useless use of private variable in void context at (eval 115495) line 1.
2016.07.25 17:32:29 1: PERL WARNING: Useless use of private variable in void context at (eval 115496) line 1.
2016.07.25 17:32:30 1: PERL WARNING: Useless use of private variable in void context at (eval 115566) line 1.
2016.07.25 17:32:30 1: PERL WARNING: Useless use of private variable in void context at (eval 115567) line 1.
2016.07.25 17:32:39 1: PERL WARNING: Useless use of private variable in void context at (eval 115708) line 1.
2016.07.25 17:32:39 1: PERL WARNING: Useless use of private variable in void context at (eval 115709) line 1.
2016.07.25 17:32:53 1: PERL WARNING: Useless use of private variable in void context at (eval 115888) line 1.
2016.07.25 17:32:53 1: PERL WARNING: Useless use of private variable in void context at (eval 115889) line 1.
2016.07.25 17:32:54 1: PERL WARNING: Useless use of private variable in void context at (eval 115960) line 1.
2016.07.25 17:32:54 1: PERL WARNING: Useless use of private variable in void context at (eval 115961) line 1.
2016.07.25 17:33:17 1: PERL WARNING: Useless use of private variable in void context at (eval 116160) line 1.
2016.07.25 17:33:17 1: PERL WARNING: Useless use of private variable in void context at (eval 116161) line 1.
2016.07.25 17:33:18 1: PERL WARNING: Useless use of private variable in void context at (eval 116231) line 1.
2016.07.25 17:33:18 1: PERL WARNING: Useless use of private variable in void context at (eval 116232) line 1.
2016.07.25 17:33:39 1: PERL WARNING: Useless use of private variable in void context at (eval 116475) line 1.
2016.07.25 17:33:39 1: PERL WARNING: Useless use of private variable in void context at (eval 116476) line 1.
2016.07.25 17:33:41 1: PERL WARNING: Useless use of private variable in void context at (eval 116526) line 1.
2016.07.25 17:33:41 1: PERL WARNING: Useless use of private variable in void context at (eval 116527) line 1.
2016.07.25 17:33:42 1: PERL WARNING: Useless use of private variable in void context at (eval 116597) line 1.
2016.07.25 17:33:42 1: PERL WARNING: Useless use of private variable in void context at (eval 116598) line 1.
2016.07.25 17:34:05 1: PERL WARNING: Useless use of private variable in void context at (eval 116879) line 1.
2016.07.25 17:34:05 1: PERL WARNING: Useless use of private variable in void context at (eval 116880) line 1.
2016.07.25 17:34:06 1: PERL WARNING: Useless use of private variable in void context at (eval 116950) line 1.
2016.07.25 17:34:06 1: PERL WARNING: Useless use of private variable in void context at (eval 116951) line 1.
2016.07.25 17:34:29 1: PERL WARNING: Useless use of private variable in void context at (eval 117179) line 1.
2016.07.25 17:34:29 1: PERL WARNING: Useless use of private variable in void context at (eval 117180) line 1.
2016.07.25 17:34:30 1: PERL WARNING: Useless use of private variable in void context at (eval 117250) line 1.
2016.07.25 17:34:30 1: PERL WARNING: Useless use of private variable in void context at (eval 117251) line 1.
2016.07.25 17:34:53 1: PERL WARNING: Useless use of private variable in void context at (eval 117534) line 1.
2016.07.25 17:34:53 1: PERL WARNING: Useless use of private variable in void context at (eval 117535) line 1.
2016.07.25 17:34:54 1: PERL WARNING: Useless use of private variable in void context at (eval 117605) line 1.
2016.07.25 17:34:54 1: PERL WARNING: Useless use of private variable in void context at (eval 117606) line 1.
2016.07.25 17:35:17 1: PERL WARNING: Useless use of private variable in void context at (eval 117815) line 1.
2016.07.25 17:35:17 1: PERL WARNING: Useless use of private variable in void context at (eval 117816) line 1.
2016.07.25 17:35:18 1: PERL WARNING: Useless use of private variable in void context at (eval 117886) line 1.
2016.07.25 17:35:18 1: PERL WARNING: Useless use of private variable in void context at (eval 117887) line 1.
2016.07.25 17:35:41 1: PERL WARNING: Useless use of private variable in void context at (eval 118174) line 1.
2016.07.25 17:35:41 1: PERL WARNING: Useless use of private variable in void context at (eval 118175) line 1.
2016.07.25 17:35:42 1: PERL WARNING: Useless use of private variable in void context at (eval 118245) line 1.
2016.07.25 17:35:42 1: PERL WARNING: Useless use of private variable in void context at (eval 118246) line 1.
2016.07.25 17:36:05 1: PERL WARNING: Useless use of private variable in void context at (eval 118541) line 1.
2016.07.25 17:36:05 1: PERL WARNING: Useless use of private variable in void context at (eval 118542) line 1.
2016.07.25 17:36:06 1: PERL WARNING: Useless use of private variable in void context at (eval 118612) line 1.
2016.07.25 17:36:06 1: PERL WARNING: Useless use of private variable in void context at (eval 118613) line 1.
2016.07.25 17:36:29 1: PERL WARNING: Useless use of private variable in void context at (eval 118847) line 1.
2016.07.25 17:36:29 1: PERL WARNING: Useless use of private variable in void context at (eval 118848) line 1.
2016.07.25 17:36:30 1: PERL WARNING: Useless use of private variable in void context at (eval 118918) line 1.
2016.07.25 17:36:30 1: PERL WARNING: Useless use of private variable in void context at (eval 118919) line 1.
2016.07.25 17:36:53 1: PERL WARNING: Useless use of private variable in void context at (eval 119195) line 1.
2016.07.25 17:36:53 1: PERL WARNING: Useless use of private variable in void context at (eval 119196) line 1.
2016.07.25 17:36:54 1: PERL WARNING: Useless use of private variable in void context at (eval 119266) line 1.
2016.07.25 17:36:54 1: PERL WARNING: Useless use of private variable in void context at (eval 119267) line 1.
2016.07.25 17:37:11 1: PERL WARNING: Useless use of private variable in void context at (eval 119439) line 1.
2016.07.25 17:37:11 1: PERL WARNING: Useless use of private variable in void context at (eval 119440) line 1.
2016.07.25 17:37:17 1: PERL WARNING: Useless use of private variable in void context at (eval 119505) line 1.
2016.07.25 17:37:17 1: PERL WARNING: Useless use of private variable in void context at (eval 119506) line 1.
2016.07.25 17:37:18 1: PERL WARNING: Useless use of private variable in void context at (eval 119576) line 1.
2016.07.25 17:37:18 1: PERL WARNING: Useless use of private variable in void context at (eval 119577) line 1.
2016.07.25 17:37:41 1: PERL WARNING: Useless use of private variable in void context at (eval 119865) line 1.
2016.07.25 17:37:41 1: PERL WARNING: Useless use of private variable in void context at (eval 119866) line 1.
2016.07.25 17:37:42 1: PERL WARNING: Useless use of private variable in void context at (eval 119936) line 1.
2016.07.25 17:37:42 1: PERL WARNING: Useless use of private variable in void context at (eval 119937) line 1.
2016.07.25 17:38:05 1: PERL WARNING: Useless use of private variable in void context at (eval 120212) line 1.
2016.07.25 17:38:05 1: PERL WARNING: Useless use of private variable in void context at (eval 120213) line 1.
2016.07.25 17:38:06 1: PERL WARNING: Useless use of private variable in void context at (eval 120283) line 1.
2016.07.25 17:38:06 1: PERL WARNING: Useless use of private variable in void context at (eval 120284) line 1.
2016.07.25 17:38:29 1: PERL WARNING: Useless use of private variable in void context at (eval 120515) line 1.
2016.07.25 17:38:29 1: PERL WARNING: Useless use of private variable in void context at (eval 120516) line 1.
2016.07.25 17:38:30 1: PERL WARNING: Useless use of private variable in void context at (eval 120586) line 1.
2016.07.25 17:38:30 1: PERL WARNING: Useless use of private variable in void context at (eval 120587) line 1.
2016.07.25 17:38:33 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 17:38:33 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 17:38:53 1: PERL WARNING: Useless use of private variable in void context at (eval 120771) line 1.
2016.07.25 17:38:53 1: PERL WARNING: Useless use of private variable in void context at (eval 120772) line 1.
2016.07.25 17:38:54 1: PERL WARNING: Useless use of private variable in void context at (eval 120842) line 1.
2016.07.25 17:38:54 1: PERL WARNING: Useless use of private variable in void context at (eval 120843) line 1.
2016.07.25 17:39:17 1: PERL WARNING: Useless use of private variable in void context at (eval 121116) line 1.
2016.07.25 17:39:17 1: PERL WARNING: Useless use of private variable in void context at (eval 121117) line 1.
2016.07.25 17:39:18 1: PERL WARNING: Useless use of private variable in void context at (eval 121187) line 1.
2016.07.25 17:39:18 1: PERL WARNING: Useless use of private variable in void context at (eval 121188) line 1.
2016.07.25 17:39:41 1: PERL WARNING: Useless use of private variable in void context at (eval 121452) line 1.
2016.07.25 17:39:41 1: PERL WARNING: Useless use of private variable in void context at (eval 121453) line 1.
2016.07.25 17:39:42 1: PERL WARNING: Useless use of private variable in void context at (eval 121523) line 1.
2016.07.25 17:39:42 1: PERL WARNING: Useless use of private variable in void context at (eval 121524) line 1.
2016.07.25 17:39:53 2: IT set R_OG1_BA on
2016.07.25 17:39:54 2: IT set R_OG1_SL on
2016.07.25 17:39:54 3: FS20 set R_OG1_WZ on
2016.07.25 17:39:55 3: FS20 set R_OG2_BUE_NO on
2016.07.25 17:40:05 1: PERL WARNING: Useless use of private variable in void context at (eval 121766) line 1.
2016.07.25 17:40:05 1: PERL WARNING: Useless use of private variable in void context at (eval 121767) line 1.
2016.07.25 17:40:06 1: PERL WARNING: Useless use of private variable in void context at (eval 121836) line 1.
2016.07.25 17:40:06 1: PERL WARNING: Useless use of private variable in void context at (eval 121837) line 1.
2016.07.25 17:40:11 1: PERL WARNING: Useless use of private variable in void context at (eval 121978) line 1.
2016.07.25 17:40:11 1: PERL WARNING: Useless use of private variable in void context at (eval 121979) line 1.
2016.07.25 17:40:29 1: PERL WARNING: Useless use of private variable in void context at (eval 122151) line 1.
2016.07.25 17:40:29 1: PERL WARNING: Useless use of private variable in void context at (eval 122152) line 1.
2016.07.25 17:40:30 1: PERL WARNING: Useless use of private variable in void context at (eval 122221) line 1.
2016.07.25 17:40:30 1: PERL WARNING: Useless use of private variable in void context at (eval 122222) line 1.
2016.07.25 17:40:31 3: FS20 set Freigabe_OG1_WS off
2016.07.25 17:40:53 1: PERL WARNING: Useless use of private variable in void context at (eval 122473) line 1.
2016.07.25 17:40:53 1: PERL WARNING: Useless use of private variable in void context at (eval 122474) line 1.
2016.07.25 17:40:54 1: PERL WARNING: Useless use of private variable in void context at (eval 122543) line 1.
2016.07.25 17:40:54 1: PERL WARNING: Useless use of private variable in void context at (eval 122544) line 1.
2016.07.25 17:41:02 3: IT_11011001 Unknown, Please learn codes!->Unknown, Please learn codes!
2016.07.25 17:41:02 3: IT_F00F000F0F on->off
2016.07.25 17:41:03 3: IT_11000111100011110001111000101101100110011011001001011 on->off
2016.07.25 17:41:04 3: IT_F00F000F0F off->on
2016.07.25 17:41:05 3: IT_11000111100011110001111000101101100110011011001001011 off->on
2016.07.25 17:41:11 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 17:41:11 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 17:41:17 1: PERL WARNING: Useless use of private variable in void context at (eval 122741) line 1.
2016.07.25 17:41:17 1: PERL WARNING: Useless use of private variable in void context at (eval 122742) line 1.
2016.07.25 17:41:18 1: PERL WARNING: Useless use of private variable in void context at (eval 122811) line 1.
2016.07.25 17:41:18 1: PERL WARNING: Useless use of private variable in void context at (eval 122812) line 1.
2016.07.25 17:41:41 1: PERL WARNING: Useless use of private variable in void context at (eval 123070) line 1.
2016.07.25 17:41:41 1: PERL WARNING: Useless use of private variable in void context at (eval 123071) line 1.
2016.07.25 17:41:42 1: PERL WARNING: Useless use of private variable in void context at (eval 123140) line 1.
2016.07.25 17:41:42 1: PERL WARNING: Useless use of private variable in void context at (eval 123141) line 1.
2016.07.25 17:42:05 1: PERL WARNING: Useless use of private variable in void context at (eval 123446) line 1.
2016.07.25 17:42:05 1: PERL WARNING: Useless use of private variable in void context at (eval 123447) line 1.
2016.07.25 17:42:06 1: PERL WARNING: Useless use of private variable in void context at (eval 123516) line 1.
2016.07.25 17:42:06 1: PERL WARNING: Useless use of private variable in void context at (eval 123517) line 1.
2016.07.25 17:42:29 1: PERL WARNING: Useless use of private variable in void context at (eval 123759) line 1.
2016.07.25 17:42:29 1: PERL WARNING: Useless use of private variable in void context at (eval 123760) line 1.
2016.07.25 17:42:30 1: PERL WARNING: Useless use of private variable in void context at (eval 123829) line 1.
2016.07.25 17:42:30 1: PERL WARNING: Useless use of private variable in void context at (eval 123830) line 1.
2016.07.25 17:42:53 1: PERL WARNING: Useless use of private variable in void context at (eval 124070) line 1.
2016.07.25 17:42:53 1: PERL WARNING: Useless use of private variable in void context at (eval 124071) line 1.
2016.07.25 17:42:54 1: PERL WARNING: Useless use of private variable in void context at (eval 124140) line 1.
2016.07.25 17:42:54 1: PERL WARNING: Useless use of private variable in void context at (eval 124141) line 1.
2016.07.25 17:43:17 1: PERL WARNING: Useless use of private variable in void context at (eval 124362) line 1.
2016.07.25 17:43:17 1: PERL WARNING: Useless use of private variable in void context at (eval 124363) line 1.
2016.07.25 17:43:18 1: PERL WARNING: Useless use of private variable in void context at (eval 124432) line 1.
2016.07.25 17:43:18 1: PERL WARNING: Useless use of private variable in void context at (eval 124433) line 1.
2016.07.25 17:43:41 1: PERL WARNING: Useless use of private variable in void context at (eval 124707) line 1.
2016.07.25 17:43:41 1: PERL WARNING: Useless use of private variable in void context at (eval 124708) line 1.
2016.07.25 17:43:42 1: PERL WARNING: Useless use of private variable in void context at (eval 124777) line 1.
2016.07.25 17:43:42 1: PERL WARNING: Useless use of private variable in void context at (eval 124778) line 1.
2016.07.25 17:43:56 1: PERL WARNING: Useless use of private variable in void context at (eval 124952) line 1.
2016.07.25 17:43:56 1: PERL WARNING: Useless use of private variable in void context at (eval 124953) line 1.
2016.07.25 17:44:05 1: PERL WARNING: Useless use of private variable in void context at (eval 125072) line 1.
2016.07.25 17:44:05 1: PERL WARNING: Useless use of private variable in void context at (eval 125073) line 1.
2016.07.25 17:44:06 1: PERL WARNING: Useless use of private variable in void context at (eval 125142) line 1.
2016.07.25 17:44:06 1: PERL WARNING: Useless use of private variable in void context at (eval 125143) line 1.
2016.07.25 17:44:26 1: PERL WARNING: Useless use of private variable in void context at (eval 125346) line 1.
2016.07.25 17:44:26 1: PERL WARNING: Useless use of private variable in void context at (eval 125347) line 1.
2016.07.25 17:44:29 1: PERL WARNING: Useless use of private variable in void context at (eval 125401) line 1.
2016.07.25 17:44:29 1: PERL WARNING: Useless use of private variable in void context at (eval 125402) line 1.
2016.07.25 17:44:30 1: PERL WARNING: Useless use of private variable in void context at (eval 125471) line 1.
2016.07.25 17:44:30 1: PERL WARNING: Useless use of private variable in void context at (eval 125472) line 1.
2016.07.25 17:45:08 2: autocreate: define FileLog_THGR810_6 FileLog /media/hdd/fhem/log01/THGR810_6-%Y.log THGR810_6
2016.07.25 17:45:08 2: autocreate: define SVG_THGR810_6 SVG FileLog_THGR810_6:temp4hum4:CURRENT
2016.07.25 17:45:12 1: PERL WARNING: Useless use of private variable in void context at (eval 125812) line 1.
2016.07.25 17:45:12 1: PERL WARNING: Useless use of private variable in void context at (eval 125813) line 1.
2016.07.25 17:45:17 1: PERL WARNING: Useless use of private variable in void context at (eval 125872) line 1.
2016.07.25 17:45:17 1: PERL WARNING: Useless use of private variable in void context at (eval 125873) line 1.
2016.07.25 17:45:18 1: PERL WARNING: Useless use of private variable in void context at (eval 125942) line 1.
2016.07.25 17:45:18 1: PERL WARNING: Useless use of private variable in void context at (eval 125943) line 1.
2016.07.25 17:45:41 1: PERL WARNING: Useless use of private variable in void context at (eval 126209) line 1.
2016.07.25 17:45:41 1: PERL WARNING: Useless use of private variable in void context at (eval 126210) line 1.
2016.07.25 17:45:42 1: PERL WARNING: Useless use of private variable in void context at (eval 126279) line 1.
2016.07.25 17:45:42 1: PERL WARNING: Useless use of private variable in void context at (eval 126280) line 1.
2016.07.25 17:46:05 1: PERL WARNING: Useless use of private variable in void context at (eval 126544) line 1.
2016.07.25 17:46:05 1: PERL WARNING: Useless use of private variable in void context at (eval 126545) line 1.
2016.07.25 17:46:06 1: PERL WARNING: Useless use of private variable in void context at (eval 126614) line 1.
2016.07.25 17:46:06 1: PERL WARNING: Useless use of private variable in void context at (eval 126615) line 1.
2016.07.25 17:46:21 1: PERL WARNING: Useless use of private variable in void context at (eval 126685) line 1.
2016.07.25 17:46:21 1: PERL WARNING: Useless use of private variable in void context at (eval 126689) line 1.
2016.07.25 17:46:29 1: PERL WARNING: Useless use of private variable in void context at (eval 126859) line 1.
2016.07.25 17:46:29 1: PERL WARNING: Useless use of private variable in void context at (eval 126860) line 1.
2016.07.25 17:46:30 1: PERL WARNING: Useless use of private variable in void context at (eval 126929) line 1.
2016.07.25 17:46:30 1: PERL WARNING: Useless use of private variable in void context at (eval 126930) line 1.
2016.07.25 17:46:53 1: PERL WARNING: Useless use of private variable in void context at (eval 127183) line 1.
2016.07.25 17:46:53 1: PERL WARNING: Useless use of private variable in void context at (eval 127184) line 1.
2016.07.25 17:46:54 1: PERL WARNING: Useless use of private variable in void context at (eval 127253) line 1.
2016.07.25 17:46:54 1: PERL WARNING: Useless use of private variable in void context at (eval 127254) line 1.
2016.07.25 17:47:12 2: IT set R_OG1_BA off
2016.07.25 17:47:12 2: IT set R_OG1_SL off
2016.07.25 17:47:13 3: FS20 set R_OG1_WZ on
2016.07.25 17:47:13 3: FS20 set R_OG2_BUE_NO off
2016.07.25 17:47:17 1: PERL WARNING: Useless use of private variable in void context at (eval 127523) line 1.
2016.07.25 17:47:17 1: PERL WARNING: Useless use of private variable in void context at (eval 127524) line 1.
2016.07.25 17:47:17 2: IT set R_OG1_BA off
2016.07.25 17:47:17 2: IT set R_OG1_SL off
2016.07.25 17:47:18 3: FS20 set R_OG1_WZ on
2016.07.25 17:47:19 1: PERL WARNING: Useless use of private variable in void context at (eval 127595) line 1.
2016.07.25 17:47:19 1: PERL WARNING: Useless use of private variable in void context at (eval 127596) line 1.
2016.07.25 17:47:19 2: IT set R_OG1_BA off
2016.07.25 17:47:19 2: IT set R_OG1_SL off
2016.07.25 17:47:19 3: FS20 set R_OG1_WZ on
2016.07.25 17:47:21 3: FS20 set R_OG1_WZ on
2016.07.25 17:47:22 2: IT set R_OG1_BA off
2016.07.25 17:47:22 2: IT set R_OG1_SL off
2016.07.25 17:47:41 1: PERL WARNING: Useless use of private variable in void context at (eval 127921) line 1.
2016.07.25 17:47:41 1: PERL WARNING: Useless use of private variable in void context at (eval 127922) line 1.
2016.07.25 17:47:42 1: PERL WARNING: Useless use of private variable in void context at (eval 127993) line 1.
2016.07.25 17:47:42 1: PERL WARNING: Useless use of private variable in void context at (eval 127994) line 1.
2016.07.25 17:48:05 1: PERL WARNING: Useless use of private variable in void context at (eval 128295) line 1.
2016.07.25 17:48:05 1: PERL WARNING: Useless use of private variable in void context at (eval 128296) line 1.
2016.07.25 17:48:06 1: PERL WARNING: Useless use of private variable in void context at (eval 128367) line 1.
2016.07.25 17:48:06 1: PERL WARNING: Useless use of private variable in void context at (eval 128368) line 1.
2016.07.25 17:48:29 1: PERL WARNING: Useless use of private variable in void context at (eval 128624) line 1.
2016.07.25 17:48:29 1: PERL WARNING: Useless use of private variable in void context at (eval 128625) line 1.
2016.07.25 17:48:30 1: PERL WARNING: Useless use of private variable in void context at (eval 128696) line 1.
2016.07.25 17:48:30 1: PERL WARNING: Useless use of private variable in void context at (eval 128697) line 1.
2016.07.25 17:48:53 1: PERL WARNING: Useless use of private variable in void context at (eval 128946) line 1.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Juli 2016, 21:09:49
Hallo Chris,

jetzt fehlen die Debug-Meldungen Deines HTTPMOD-Geräts im Log. So sehe ich keinen Zusammenhang zwischen HTTPMOD und den Warn-Meldungen.
Wenn Du einen Log-Ausschnitt postest, der für den gleichen Zeitraum sowohl die Meldungen Deines HTTPMOD-Gerätes als auch die Warnungen enthält, sollte man erkennen können, ob zu dem Zeitpunkt der Warnung eine Aktion des Geräts läuft und falls ja welche ...

Bist Du sicher, dass die überhaupt etwas mit HTTPMOD zu tun haben?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Skusi am 26 Juli 2016, 19:58:08
Hallo,
ich beschäftige mich nun schon seit Tagen mit HTTPMOD, und versuche die Regex Syntax zu lernen.

Ich frage die Biowetter Seite von Donnerwetter.de ab, finde aber einfach nicht heraus wie ich folgende RegEx ändern muß das statt "keine" auch auf nichts reagiert wird.
Also Donnerwetter hat seine Seite so geändert das es einfach nix zwischen den strongs anzeigt, wenn es keine Gefahr gibt. Es steht dann also so da:

<strong></strong>

Wie kann ich erreichen das dann mein reading mit nix, oder besser noch mit "keine" gefüllt wird ?

Nun ist es so das das reading nicht aktualisiert wird, wenn keines der oder verknüpften strings gefunden wird. Dann steht solange der letzte Wert drin bis ein anderer gefunden wird. Also habe ich bei aktueller nichts Meldung immer dem letzten alten wert im Reading.

Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt.

Kann jemand helfen ???

(?s)Herzinsuffizienz<\/td>.*?<strong>(sehr stark|stark|schwach|keine)?<\/strong>
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 27 Juli 2016, 13:06:02
@StefanStrobel
Zitat
Bist Du sicher, dass die überhaupt etwas mit HTTPMOD zu tun haben?
Dieser Perl Warning Meldung tritt nur auf wenn ich die DL2 cfg lade.
Es ist nur eigenartig, wenn ich stacktrace aktiviere tritt diese Warnung nicht auf.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Juli 2016, 12:30:56
Hallo Skusi,

Probier doch mal das deleteIfUnmatched Attribut von HTTPMOD aus.

Gruß
      Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 06 August 2016, 12:24:45
Wo finde ich eine Erklärung zu diesem Parameter.
deleteIfUnmatched HTTPMOD finde ich nicht im Wiki noch im Commandref.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 06 August 2016, 15:10:55
Zitat von: Burny4600 am 06 August 2016, 12:24:45
Wo finde ich eine Erklärung zu diesem Parameter.
deleteIfUnmatched HTTPMOD finde ich nicht im Wiki nochim Commandref.
dann ist dein fhem nicht up-to-date.

commandref:
Zitatget|reading[0-9]*DeleteIfUnmatched
If set to 1 this attribute causes certain readings to be deleted when the parsing of the website does not match the specified reading. Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be deleted if the same operation does not parse this reading again. This is especially useful for parsing that creates several matches / readings and ths number of matches can vary from request to request. For example if reading01Regex creates 4 readings in one update cycle and in the next cycle it only matches two times the the readings containing the remaining values from the last round will be deleted.
Please note that this mechanism will not work in all cases after a restart. Especially when a get definition does not contain its own parsing definition but ExtractAllJSON or relies on HTTPMOD to use all defined reading.* attributes to parse the responsee to a get command, old readings might not be deleted after a restart of fhem.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 06 August 2016, 18:08:59
Wo ich dieses Attribut verwenden soll ist mir dennoch noch nicht ganz klar.
Zur Auswahl steht dies bei den HTTPMOD Gerät auch nicht obwohl mein FHEM aktuell ist.

define DL2 HTTPMOD http://192.xxx.xxx.xxx/dlx/download/live?&outputType=json&source=current 15
attr DL2 event-on-change-reading headersets_01_packets_01_field_values_(01|02|03|04|05|06|07|08|09|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32)_value,headersets_01_packets_02_field_values_(01|02|03|04)_value,(F|W)M,headersets_01_packets_03_field_values_(01|02|03|04)_value,T_0(1|2|3|4|5|6|7|8|9),T_1(0|1|2),CS10,IMP0(1|2),S(BRM|KSM|BEM|Z),R_(1|2|3|4|5|6|7|8|9),RBEM,RV,VT_(1|2),RT_(1|2),W_(1|2)_(Wh|kWh|MWh),VS_(1|2)_(lph|lpmin|m3ph)
attr DL2 extractAllJSON 1
attr DL2 userReadings T_01:headersets_01_packets_01_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_01_value",0)},\
T_02:headersets_01_packets_01_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_02_value",0)},\
T_03:headersets_01_packets_01_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_03_value",0)},\
T_04:headersets_01_packets_01_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_04_value",0)},\
T_05:headersets_01_packets_01_field_values_05_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_05_value",0)},\
T_06:headersets_01_packets_01_field_values_06_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_06_value",0)},\
T_07:headersets_01_packets_01_field_values_07_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_07_value",0)},\
T_08:headersets_01_packets_01_field_values_08_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_08_value",0)},\
T_09:headersets_01_packets_01_field_values_09_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_09_value",0)},\
T_10:headersets_01_packets_01_field_values_10_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_10_value",0)},\
T_11:headersets_01_packets_01_field_values_11_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_11_value",0)},\
T_12:headersets_01_packets_01_field_values_12_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_12_value",0)},\
CS10:headersets_01_packets_01_field_values_13_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_13_value",0)},\
IMP01:headersets_01_packets_01_field_values_14_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_14_value",0)},\
IMP02:headersets_01_packets_01_field_values_15_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_15_value",0)},\
SBRM:headersets_01_packets_01_field_values_16_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_16_value",0)},\
SKSM:headersets_01_packets_01_field_values_17_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_17_value",0)},\
SBEM:headersets_01_packets_01_field_values_18_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_18_value",0)},\
R_1:headersets_01_packets_01_field_values_19_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_19_value",0)},\
R_2:headersets_01_packets_01_field_values_20_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_20_value",0)},\
R_3:headersets_01_packets_01_field_values_21_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_21_value",0)},\
R_4:headersets_01_packets_01_field_values_22_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_22_value",0)},\
R_5:headersets_01_packets_01_field_values_23_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_23_value",0)},\
R_6:headersets_01_packets_01_field_values_24_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_24_value",0)},\
R_7:headersets_01_packets_01_field_values_25_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_25_value",0)},\
R_8:headersets_01_packets_01_field_values_26_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_26_value",0)},\
R_9:headersets_01_packets_01_field_values_27_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_27_value",0)},\
RBEM:headersets_01_packets_01_field_values_28_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_28_value",0)},\
FM:headersets_01_packets_01_field_values_29_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_29_value",0)},\
WM:headersets_01_packets_01_field_values_30_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_30_value",0)},\
RV:headersets_01_packets_01_field_values_31_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_31_value",0)},\
SZ:headersets_01_packets_01_field_values_32_value.* {ReadingsVal("DL2","headersets_01_packets_01_field_values_32_value",0)},\
VT_1:headersets_01_packets_02_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_01_value",0)},\
RT_1:headersets_01_packets_02_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_02_value",0)},\
VS_1_lph:headersets_01_packets_02_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_03_value",0)},\
W_1_Wh:headersets_01_packets_02_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_02_field_values_04_value",0)},\
VT_2:headersets_01_packets_03_field_values_01_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_01_value",0)},\
RT_2:headersets_01_packets_03_field_values_02_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_02_value",0)},\
VS_2_lph:headersets_01_packets_03_field_values_03_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_03_value",0)},\
W_2_Wh:headersets_01_packets_03_field_values_04_value.* {ReadingsVal("DL2","headersets_01_packets_03_field_values_04_value",0)},\
W_1_kWh:W_1_Wh.* {ReadingsVal("DL2","W_1_Wh",0)/1000},\
W_1_MWh:W_1_Wh.* {ReadingsVal("DL2","W_1_Wh",0)/1000000},\
W_2_kWh:W_2_Wh.* {ReadingsVal("DL2","W_2_Wh",0)/1000},\
W_2_MWh:W_2_Wh.* {ReadingsVal("DL2","W_2_Wh",0)/1000000},\
VS_1_lpmin:VS_1_lph.* {ReadingsVal("DL2","VS_1_lph",0)/60},\
VS_1_m3ph:VS_1_lph.* {ReadingsVal("DL2","VS_1_lph",0)/1000},\
VS_2_lpmin:VS_2_lph.* {ReadingsVal("DL2","VS_2_lph",0)/60},\
VS_2_m3ph:VS_2_lph.* {ReadingsVal("DL2","VS_2_lph",0)/1000}
attr DL2 verbose 1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 06 August 2016, 19:49:49
ModuleVersion   3.3.0 - 19.6.2016
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 07 August 2016, 13:44:01
Ist bei mir auch die gleiche Version.
98_HTTPMOD.pm         11692 2016-06-19 09:08:31Z ststrobel
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 August 2016, 21:12:42
Hallo Chris,

meine Empfehlung für deleteIfUnmatched bezog sich auf die Frage von Skusi.
Normalerweise würde es zusammen mit manuell definierten Readings definiert. Man gibt jedem Reading in HTTPMOD einen Namen und konkrete Parsing- bzw. Format-Anweisungen,
z.B. reading01Name Spannung,
reading01JSON meinJSONPFAD etc.
reading01DeleteIfUnmatched würde dann das Reading entfernen wenn es beim Lesen nicht mehr gefunden wird.
Man kann es auch allgemeiner als readingDeleteIfUnmatched schreiben, dann gilt es für alle Readings (wie bei den anderen Attributen für die Nachbearbeitung der Readings etc.)

In Deiner Konfig nutzt Du userReadings anstelle der Features von HTTPMOD. Kann man machen - muss man aber nicht ;-)

Die Logs, die Du gepostet hast, enthalten zwar viele Daten, aber ich sehe keine HTTPMOD Logs mit Level 5. Vermutlich fehlt immer noch das attr DL2 verbose 5.
Die Perl-Warnung, nach der Du suchst, scheint laut StackTrace aber auch in einem DOIF zu stecken...


Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 12 August 2016, 10:25:27
Woraus sehe ich das im LOG ob es mit dem  HTTPMOD liegt oder von wo anders?

ZitatIn Deiner Konfig nutzt Du userReadings anstelle der Features von HTTPMOD. Kann man machen - muss man aber nicht
Wie sieht das genau aus anders zu machen? Bringt das etwas für FHEM?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Ralf Kruppa am 12 August 2016, 14:03:15
Hallo ich bin recht neue hier und wolte mal fragen wie ich die neue Version updaten kann bzw installieren kann ?
Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 12 August 2016, 14:16:40
Zitat von: Ralf Kruppa am 12 August 2016, 14:03:15
Hallo ich bin recht neue hier und wolte mal fragen wie ich die neue Version updaten kann bzw installieren kann ?
Danke
ganz normal über ein "update" von fhem.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Ralf Kruppa am 12 August 2016, 14:17:35
Danke.
update 98_HTTPMOD.pm

Gruß Ralf
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 August 2016, 18:17:47
Hallo Chris,

zum Thema user readings:
Wenn HTTPMOD mit extractAllJSON zunächst alle möglichen Werte in Readings packt, dann belastet das die Performance und es werden unnötig viele Daten / Events erzeugt. Die User Readings setzen da dann nochmal was oben drauf.
Wenn Du es gleich in HTTPMOD richtig definierst, werden nur die Readings erzeugt, die auch benötigt werden, sie haben gleich den richtigen Namen und mit den entsprechenden Attributen kannst Du Berechnungen etc. direkt an der Datenquelle definieren.
Im wiki habe ich gerade nochmal zwei Sätze dazu geschrieben.
Dennoch bleiben beide Wege korrekt und unterm Strich ist es Geschmackssache.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 27 August 2016, 19:52:01
@StefanStrobel
Habe HTTPMOD jetzt geändert.
Laut Monitoring ist der Traffic weniger.
Werde das Ganze beobachten ob noch Perl Warnungen betreffend HTTPMOD auftreten.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: hartenthaler am 05 September 2016, 00:32:25
Ich bin bei einer recht simplen Webseite am Verzweifeln. Ich möchte die Wassertemperatur aus der folgenden Web-Seite auslesen: http://wind.met.fu-berlin.de/mvdtext/mvd_text.htm

Das HTTPMOD-Modul aktualisiert den buf auch ordentlich, aber es wird kein einziges Reading erzeugt, obwohl ich die regulären Ausdrücke mit https://regex101.com/ getestet habe. Dort funktionieren sie, warum in fhem nicht? Habe alles mögliche probiert, aber ich muss einen systematischen Denkfehler drin haben.

Content-Type: text/html
   httpversion 1.0
   hu_blocking 0
   hu_filecount 6
   ignoreredirects 0
   loglevel   4
   path       /mvdtext/mvd_text.htm
   protocol   http
   redirects  0
   timeout    2
   url        http://wind.met.fu-berlin.de/mvdtext/mvd_text.htm
   value      0
   QUEUE:
   Readings:
   Request:
     data
     header     User-Agent: Mozilla/5.0 (Windows NT 6.0)
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://wind.met.fu-berlin.de/mvdtext/mvd_text.htm
     value      0
   Sslargs:
Attributes: 
   enableControlSet 1
   reading01Name Zeitstempel
   reading01Regex '>Wetterbericht[\s\S]{10,140}>(.*)\ Uhr<
   reading03Name Havel_Spandau
   reading03Regex >Havel\ \/\ Spandau[\s\S]{1,80}>([\d,]{1,4})°C
   reading04Name Tegeler_See
   reading04Regex \>Tegeler\ See[\s\S]{1,80}\>([\d,]{1,4})°C
   reading06Name Meridiandurchgang
   reading06Regex Meridiandurchgang der Sonne: ([\d:]{5}) Uhr
   requestHeader1 User-Agent: Mozilla/5.0 (Windows NT 6.0)
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex requestHeader1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gernott am 05 September 2016, 07:42:59
Ich traue mich kaum zu fragen, aber hast Du auf den Seitenquelltext getestet?
Ich lese die Flusswassertemperatur von hier: http://www.hydrodaten.admin.ch/de/2143.html (http://www.hydrodaten.admin.ch/de/2143.html)

mit folgender Regex:

Attributes:
   enableControlSet 1
   event-on-update-reading .*
   reading01Name Wassertemperatur
   reading01Regex (?:Letzter\sMesswert.*\n.*\n.*\n.*\D)(\d*.\d)
   room       Wetter
   stateFormat {sprintf("%.1f", ReadingsVal($name,"Wassertemperatur",0))}
   timeout    30
   userattr   reading01Name reading01Regex


Möglicherweise nicht überaus elegant, funktioniert aber.

Gruß
G.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: hartenthaler am 05 September 2016, 21:54:26
Äh? Gut dass Du gefragt hast!!!

Habe ich nicht. ich habe gegen den Inhalt des Internals buf getestet, weil ich davon ausging, dass fhem die Seite in buf einliest und dann dagegen auswertet. Dem ist aber wohl nicht so. Beim Test gegen die Original-Seite sehen die richtigen regulären Ausdrücke leicht anders aus, da diverse Zeilenumbrüche im Original zusätzlich drin sind, die in buf fehlen. Klassischer Denkfehler von mir.
Allerdings legt das fhem wiki http://www.fhemwiki.de/wiki/HTTPMOD im Abschnitt "Some help with Regular Expressions" genau dies nahe, denn dort wird explizit auf buf verwiesen. Das war in dem Fall kein "some help", sondern eine Irreführung.

Mit dem richtigen Ansatz habe ich nun die regulären Ausdrücke modifiziert und kann einen Teilerfolg verbuchen. Danke für den Denkanstoß!

reading01Name Zeitstempel
reading01Regex '>Wetterbericht[\s\S]{1,200}>([\s\S]*) Uhr<
reading03Name Havel_Spandau
reading03Regex >Havel \/ Spandau[\s\S]{10,90}>([\d,]*)°C
reading04Name Tegeler_See
reading04Regex >Tegeler See[\s\S]{1,90}>([\d,]{1,4})°C
reading06Name Meridiandurchgang
reading06Regex Meridiandurchgang[\s\S]{2,10}: ([\d:]{5}) Uhr

Zeitstempel und Meridiandurchgang werden nun richtig befüllt. die readings 03 und 04 funktionieren im regexp-Testprogramm gegen die Original-Webseite, aber hier in fhem leider immer noch nicht. Mühsam.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 September 2016, 23:00:40
Hallo,

Ich habe den Wiki-Artikel ergänzt. buf ist schon der interne Speicher, in den die Response gelesen wird. Nur zeigt Fhemweb die Zeilenumbrüche nicht an...

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 18 September 2016, 11:08:37
Trotz SuFu finde ich nicht die richtige Antwort, kann aber auch sein, dass es daran liegt, dass ich den Fehler nicht verstehe. Ich bekomme in unregelmäßigen Abständen folgenden Logeintrag:

2016.09.18 09:45:08 3: Benzin: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Server: nginx/1.10.0 (Ubuntu)
Date: Sun, 18 Sep 2016 07:34:55 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept
Access-Control-Allow-Methods: GET, body empty,
Error: read from https://creativecommons.tankerkoenig.de:443 timed out
2016.09.18 09:45:08 3: Benzin: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "(end of string)") at (eval 100570) line 1.


Kommt dieser Fehler, weil die Website nicht verfügbar war daher auch das "443 timed out", oder hat der Fehler etwas anderes zu bedeuten? Weiterhin fällt mir auf, dass ein "list Benzin" extrem lange ist. Siehe hier:


Internals:
   BUSY       0
   CFGFN
   DEF        https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX610
   Interval   610
   JSONEnabled 1
   LASTSEND   1474188975.06005
   MainURL    https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX
   ModuleVersion 3.3.0 - 19.6.2016
   NAME       Benzin
   NR         329
   STATE      ???
   TRIGGERTIME 1474189585.05872
   TRIGGERTIME_FMT 2016-09-18 11:06:25
   TYPE       HTTPMOD
   addr       https://creativecommons.tankerkoenig.de:443
   buf        HTTP/1.1 200 OK

Server: nginx/1.10.0 (Ubuntu)

Date: Sun, 18 Sep 2016 08:56:15 GMT

Content-Type: application/json; charset=utf-8

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept

Access-Control-Allow-Methods: GET



{"ok":true,"license":"CC BY 4.0 -  http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"e1a15081-2613-9107-e040-0b0a3dfe563c":{"status":"open","e5":1.329,"e10":1.309,"diesel":1.109},"174ba965-2b6e-468c-86c3-44a6601b1f3f":{"status":"open","e5":1.329,"e10":1.309,"diesel":1.109},"e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56":{"status":"open","e5":1.299,"e10":1.279,"diesel":1.079},"2fdeef9e-36ca-44d7-9ee4-3bdaa0112539":{"status":"open","e5":1.309,"e10":1.289,"diesel":1.089}}}
   code       200
   conn
   data
   displayurl https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX
   header
   host       creativecommons.tankerkoenig.de
   httpheader HTTP/1.1 200 OK

Server: nginx/1.10.0 (Ubuntu)

Date: Sun, 18 Sep 2016 08:56:15 GMT

Content-Type: application/json; charset=utf-8

Connection: close

Access-Control-Allow-Origin: *

Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept

Access-Control-Allow-Methods: GET
   httpversion 1.0
   hu_blocking 0
   hu_filecount 7
   ignoreredirects 0
   loglevel   4
   path       /json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX
   protocol   https
   redirects  0
   timeout    2
   url        https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX
   value      0
   QUEUE:
   Readings:
     2016-09-18 10:56:15   data            MTS-K
     2016-09-18 10:56:15   license         CC BY 4.0 -  http://creativecommons.tankerkoenig.de
     2016-09-18 10:56:15   ok              true
     2016-09-18 10:56:15   prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel 1.109
     2016-09-18 10:56:15   prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 1.309
     2016-09-18 10:56:15   prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 1.329
     2016-09-18 10:56:15   prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status open
     2016-09-18 10:56:15   prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel 1.089
     2016-09-18 10:56:15   prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 1.289
     2016-09-18 10:56:15   prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 1.309
     2016-09-18 10:56:15   prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status open
     2016-09-18 10:56:15   prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel 1.109
     2016-09-18 10:56:15   prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 1.309
     2016-09-18 10:56:15   prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 1.329
     2016-09-18 10:56:15   prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status open
     2016-09-18 10:56:15   prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel 1.079
     2016-09-18 10:56:15   prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 1.279
     2016-09-18 10:56:15   prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 1.299
     2016-09-18 10:56:15   prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status open
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX
     value      0
   Defptr:
     Readingbase:
       data       reading
       license    reading
       ok         reading
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
     Readingnum:
       data
       license
       ok
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5
       prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5
       prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5
       prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5
       prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status
     Readingoutdated:
     Requestreadings:
       Hash(0x12fafe8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fb030):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fb108):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fb7c8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fcb10):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fcd50):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fcfd8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fd5f0):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x12fd800):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d04568):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d048f8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d04910):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d2ff78):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d30518):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d327a0):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d34350):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d39980):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1d4a8e8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1da3a60):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1da4150):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1da4810):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e157d8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e1eac8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e1eca8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e1ed20):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e1ed80):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e1f2d8):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e55288):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e55918):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e57ad0):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e58250):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e59628):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e59940):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e10 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_e5 reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_status reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_diesel reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e10 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_e5 reading
         prices_e1a15081-2613-9107-e040-0b0a3dfe563c_status reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_diesel reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e10 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_e5 reading
         prices_e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56_status reading
       Hash(0x1e59970):
         data       reading
         license    reading
         ok         reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_diesel reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e10 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_e5 reading
         prices_174ba965-2b6e-468c-86c3-44a6601b1f3f_status reading
         prices_2fdeef9e-36ca-44d7-9ee4-3bdaa0112539_diesel reading
   
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 September 2016, 16:57:16
Hallo,

Der Fehler kommt tatsächlich daher dass der Server gelegentlich nicht erreichbar ist. Danach kommt dann auch eine Fehlermeldung vom JSON Parser, die ich im Modul auch noch unterdrücken könnte.

Das mit den vielen Einträgen beim List ist schon spannender. Kannst Du mal die relevante Konfiguration als Auszug aus der fhem.cfg posten?

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 20 September 2016, 22:59:15
Du meinst das folgende, oder?


define Benzin HTTPMOD https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXX 610
attr Benzin enableControlSet 1
attr Benzin extractAllJSON 1
attr Benzin getHeader1 Content-Type: application/json
attr Benzin getHeader2 Accept: */*
attr Benzin room Benzin
attr Benzin userattr getHeader1 getHeader2 getURL
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 September 2016, 18:42:45
Hallo,

anbei nochmal eine neue Version zum Testen, in der ein paar Bugs behoben sind.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 28 September 2016, 17:38:27
Also die Hashs sind aus dem List raus seit der neuen Version, top.
Kannst du die Fehler auch noch unterdrücken und vll einfach einen Log Eintrag in der Art "Seite nicht erreichbar" machen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 September 2016, 18:42:02
Hallo,

der Folgefehler beim JSON-Parsen eines leeren Strings (nach einem Timeout) sollte auch schon weg sein.
Was bleibt ist der Timeout beim Zugriff auf eine Seite, die nicht rechtzeitig antwortet. Ob man den Log-Eintrag jetzt noch mit sowas wie "probably the site is currently not reachable" ergänzen muss weiss ich nicht...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 29 September 2016, 20:21:30
Also mir geht es darum, dass folgender Fehler nicht mehr im Log komplett angezeigt werden muss. Daher meinte ich, dass ein einfach Satz als Hinweis im Log reichen dürfte:


2016.09.29 20:10:07 3: Benzin: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Server: nginx/1.10.0 (Ubuntu)
Date: Thu, 29 Sep 2016 17:59:55 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept
Access-Control-Allow-Methods: GET, body empty,
Error: read from https://creativecommons.tankerkoenig.de:443 timed out



und folgenden Fehler habe ich letztens noch gefunden:

2016.09.29 10:00:06 3: Benzin: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Server: nginx/1.10.0 (Ubuntu)
Date: Thu, 29 Sep 2016 07:49:54 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept
Access-Control-Allow-Methods: GET, body empty,
Error: https://creativecommons.tankerkoenig.de/json/prices.php?ids=e1a15081-2613-9107-e040-0b0a3dfe563c,174ba965-2b6e-468c-86c3-44a6601b1f3f,e8e2a14f-4bac-4b14-b8e8-b7b6347ffb56,2fdeef9e-36ca-44d7-9ee4-3bdaa0112539&apikey=XXXXXXXXXX: Can't connect(2) to https://creativecommons.tankerkoenig.de:443:  SSL wants a read first
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 30 September 2016, 19:02:03
Hat sich bei HTTPMOD irgendetwas gravierend geändert?

Seit 24.09. werden die eingelesenen Werte nicht umgesetzt.

LIST Fronius Datalogger Web 2
Internals:
   BUSY       0
   CFGFN      /media/hdd/fhem/mycfg/Fronius/PV_Anlagen_rasp01.cfg
   DEF        http://192.168.17.232/solar_api/GetInverterRealtimeData.cgi?Scope=System 15
   Interval   15
   LASTSEND   1475254687.79835
   MainURL    http://192.168.17.232/solar_api/GetInverterRealtimeData.cgi?Scope=System
   ModuleVersion 3.3.5 - 29.9.2016
   NAME       PV_Anlage_1
   NR         524
   STATE      Aktuell: 1282 Watt | Heute: 1 kWh | Dieses Jahr: 1593 kWh
   TRIGGERTIME 1475254702.79509
   TRIGGERTIME_FMT 2016-09-30 18:58:22
   TYPE       HTTPMOD
   addr       http://192.168.17.232:80
   buf        HTTP/1.0 200 OK

Content-Type: text/javascript



{
"Head" : {
"RequestArguments" : {
"Scope" : "System"
},
"Status" : {
"Code" : 0,
"Reason" : "",
"UserMessage" : ""
},
"Timestamp" : "2016-09-30T18:57:08+02:00"
},
"Body" : {
"Data" : {
"PAC" : {
"Unit" : "W",
"Values" : {}
},
"DAY_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 9000
}
},
"YEAR_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 1648000
}
},
"TOTAL_ENERGY" : {
"Unit" : "Wh",
"Values" : {
"1" : 21347000
}
}
}
}
}
   code       200
   conn
   data
   displayurl http://192.168.17.232/solar_api/GetInverterRealtimeData.cgi?Scope=System
   header
   host       192.168.17.232
   httpheader HTTP/1.0 200 OK

Content-Type: text/javascript
   httpversion 1.0
   hu_blocking 0
   hu_filecount 2
   ignoreredirects 0
   loglevel   4
   path       /solar_api/GetInverterRealtimeData.cgi?Scope=System
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.17.232/solar_api/GetInverterRealtimeData.cgi?Scope=System
   value      0
   QUEUE:
   Readings:
     2016-09-24 10:07:20   Body_Data_DAY_ENERGY_Unit Wh
     2016-09-24 10:07:20   Body_Data_DAY_ENERGY_Values_1 1000
     2016-09-24 10:07:20   Body_Data_PAC_Unit W
     2016-09-24 10:07:20   Body_Data_PAC_Values_1 1282
     2016-09-24 10:07:20   Body_Data_TOTAL_ENERGY_Unit Wh
     2016-09-24 10:07:20   Body_Data_TOTAL_ENERGY_Values_1 21292000
     2016-09-24 10:07:20   Body_Data_YEAR_ENERGY_Unit Wh
     2016-09-24 10:07:20   Body_Data_YEAR_ENERGY_Values_1 1593000
     2016-09-24 10:07:01   DDE             1
     2016-09-24 10:07:01   DTE             21292
     2016-09-24 10:07:01   DYE             1593
     2016-09-24 10:07:20   Head_RequestArguments_Scope System
     2016-09-24 10:07:20   Head_Status_Code 0
     2016-09-24 10:07:20   Head_Status_Reason
     2016-09-24 10:07:20   Head_Status_UserMessage
     2016-09-24 10:07:20   Head_Timestamp  2016-09-24T10:06:15+02:00
     2016-09-24 10:07:20   PAC             1282
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.17.232/solar_api/GetInverterRealtimeData.cgi?Scope=System
     value      0
   Sslargs:
Attributes:
   alias      PV Anlage 1
   devStateStyle style="text-align:left;;font-weight:bold;;"
   event-min-interval .*:60
   event-on-change-reading Body_Data_PAC_Values_1,PAC,Body_Data_DAY_ENERGY_Values_1,DDE,Body_Data_TOTAL_ENERGY_Values_1,DTE,Body_Data_YEAR_ENERGY_Values_1,DYE
   group      Schnittstellen LAN
   icon       measure_photovoltaic_inst
   room       _RxTx
   stateFormat {sprintf("Aktuell: %s Watt | Heute: %s kWh | Dieses Jahr: %s kWh",
(ReadingsVal("$name","PAC",0)),
(ReadingsVal("$name","DDE",0)),
(ReadingsVal("$name","DYE",0)))}
   userReadings PAC:Body_Data_PAC_Values_1.* {ReadingsVal("$name","Body_Data_PAC_Values_1",0)},
DDE:Body_Data_DAY_ENERGY_Values_1.* {ReadingsVal("$name","Body_Data_DAY_ENERGY_Values_1",0)/1000},
DYE:Body_Data_YEAR_ENERGY_Values_1.* {ReadingsVal("$name","Body_Data_YEAR_ENERGY_Values_1",0)/1000},
DTE:Body_Data_TOTAL_ENERGY_Values_1.* {ReadingsVal("$name","Body_Data_TOTAL_ENERGY_Values_1",0)/1000}
   userattr   event-min-interval event-on-change-reading icon stateFormat verbose
   verbose    1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Oktober 2016, 09:16:50
Hallo Chris,

am 29.9. habe ich eine neue Version eingecheckt. Davor am 19.6. In den 3 Monaten dazwischen hat sich HTTPMOD im SVN nicht geändert.

Wenn Dein Problem also seit dem 24.9. auftritt, dann scheint es eine andere Ursache zu haben. Mein letztes Zwischen-Update vom 21.9. liegt auch noch im Forum.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Burny4600 am 02 Oktober 2016, 10:25:20
Gut dann muss ich das Ganze nochmals überprüfen.
Danke für die Rückmeldung.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Oktober 2016, 09:30:40
Hallo Amenophis86,

ich habe das Logging im Read-Callback ein wenig optimiert.
Anbei eine neue Version zum testen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 03 Oktober 2016, 10:28:05
Top, werde es gleich mal einspielen und testen. Dank dir :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gason am 03 Oktober 2016, 15:24:10
Habe die neue Version installiert und bekomme beim Start folgendes:
Bitte um einen Hinweis was ich tun kann.
Danke.

[code]2016.10.03 15:17:05 0: syntax error at ./FHEM/98_HTTPMOD.pm line 2341, near "Log3 "HTTPMOD""

2016.10.03 15:17:07 1: reload: Error:Modul 98_HTTPMOD deactivated:
syntax error at ./FHEM/98_HTTPMOD.pm line 2341, near "Log3 "HTTPMOD""

2016.10.03 15:17:07 0: syntax error at ./FHEM/98_HTTPMOD.pm line 2341, near "Log3 "HTTPMOD""
[/code]

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 03 Oktober 2016, 20:02:00
Ich bekomme den Fehler nicht. Und der neue Output beim Fehler 403 ist nur noch

2016.10.03 19:10:05 3: Benzin: Read callback: Error: read from https://creativecommons.tankerkoenig.de:443 timed out

Was mir sehr gut gefällt. Frage ist, ob man ein Attribut einbauen kann, was quasi diesen Fehler bei aktivieren ganz unterdrückt. Alternativ natürlich das Log Level hoch setzen, wobei da dann auch andere Fehler unterdrückt werden würden. Aber so, wie es jetzt ist, ist auf jeden Fall schon mal top :) Vielen Dank dafür.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Oktober 2016, 21:24:06
Hallo Gason,

das ist seltsam. Ich bekomme den Fehler auch nicht. An der entsprechenden Stelle sehe ich auch keinen Syntax error.
Was für eine Perl-Version setzt Du denn ein? Ich hab die betreffende Zeile mal geringfügig umgeschrieben (Variante angehängt). Kommt der Fehler so bei Dir immer noch?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SofB am 06 November 2016, 12:16:35
Hallo,

ich versuche mit HTTPMOD eine monit Seite auszulesen.
Das ganze soll mit xpath laut Wiki funktionieren.
Leider werden keine Readings angezeigt.

http://admin:geheim@rackstation:2812/ 15

Ich bekomme auch ein 200 zurueck und kann im Buffer die Seite sehen.

reading01Name
Temperature
   
reading01XPath
//table/tbody/tr[6]/td[3]
   
userattr   
reading01Name reading01XPath

Auch ein xpath auf .//*[@id='header-row']/tbody/tr[6]/td[3] bringt nix. Ermittelt wird das xpath von mir per Firebug Extension.
Hat jemand Erfahrung mit xpath in HTTPMOD?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 23 November 2016, 15:15:14
Habe eine Frage zu setTextArg.
Wenn ich das gesetzt habe, wie kann ich dann einen Leerstring an das Device senden?
Mit "NoArg" kann ich das, aber ich muss manchman eben Text senden, und manchmal einen Leerstring...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 November 2016, 18:23:36
Hallo,

Mit TextArg sollte auch ein Leerstring funktionieren.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 29 November 2016, 08:24:51
Hallo habe folgendes Problem ich lese mit httpmod die werte meiner Pool Steuerung aus und steuer diese. Dieses klappt auch wunderbar, bis auf den Punkt das mir negative Werte ohne voran gesetztes - angezeigt werden.
Derzeit sind es -2,5°C im modul Buffer werden diese als -25 angezeigt was also soweit stimmt aber an meiner regex muss ich nochmal ändern damit auch das - erkannt und ausgelesen wird.

Wer kann helfen?

HTTP/1.1 200 OK <html><head><title>E2000-NET-IO</title></head> <body text=white link=white alink=white vlink=white bgcolor=black><font face='Courier New'><h1>E2000-NET-IO</h1> <div style='float:left;margin:5px'><a href='p0'>POOL Pum</a></div> <div style='float:left;margin:5px'><a href='p1'>Pool Lic</a></div> <div style='background:#333;float:left;margin:5px'><a href='p2'>Temperat</a></div> <div style='float:left;margin:5px'><a href='p3'>Garten</a></div> <div style='float:left;margin:5px'><a href='p4'>Carport</a></div> <div style='float:left;margin:5px'><a href='p5'></a></div> <div style='float:left;margin:5px'><a href='s '>Status</a></div><table style='clear:both;width:400px'> <tr><td>Luft</td><td> -25</td></tr> <tr><td>Wasser</td><td> -30</td></tr> <tr><td>PH Anheb</td><td> 495</td></tr> <tr><td>???</td><td> 49</td></tr> <tr><td>PH in</td><td> 288</td></tr> </table><p>Created by <a href='http://elektronik2000.de/'>Elektronik2000.de</a></p> <meta http-equiv='refresh' content='3; URL=?'></font></body></html>



(?s).*?Luft.*?([\d]+)


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 November 2016, 08:36:15
Moin Tueftler,

vielleicht können wir uns zusammen tun...hab gerade ein ähnliches Problem:
Von einer Wetterstation hole ich mir die aktuelle Luft-Temperatur aus diesem Ausschnitt:

<b>Temperatur</b></font></td> <td valign="bottom" bgcolor="#E5E5E5"> <font face="Verdana" size="2">Aktuell: -3,6 °C</font></td>

Da es bisher mit Plus-Graden geklappt hat, mit Minus-Graden aber nicht, habe ich mal folgende Regex probiert:
(?s)>Temperatur<.*?\:([\-]?[ \d\,]+)

Klappt leider nicht, und das entsprechende Reading bleibt einfach leer.

Bei Plus-Graden funktioniert diese Regex:
(?s)>Temperatur<.*?\:([ \d\,]+)


Vielleicht gibt es ja Tipps, die uns beiden weiterhelfen...  ;)

Vielen Dank schonmal!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 29 November 2016, 08:55:51
Zitat von: Tueftler1983 am 29 November 2016, 08:24:51
Derzeit sind es -2,5°C im modul Buffer werden diese als -25 angezeigt was also soweit stimmt aber an meiner regex muss ich nochmal ändern damit auch das - erkannt und ausgelesen wird.

Nimm mal den...
Du brauchst nur eine  "-?" prüft, ob es ein Minus gibt und nimmt es mit in die Klammer.

>Luft.*?>\s*(-?[\d]+)<


@Vize:
Der klappt mit deinen Testdaten.
>Temperatur<.*?\:\s*(-?[\d,]+)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 29 November 2016, 09:00:50
Super mit

(?s).*?Luft.*?([-?\d]+)


Klappt es, mal gucken was später angezeigt wird wenn es wieder + Grade sind
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 29 November 2016, 09:31:19
Zitat von: Tueftler1983 am 29 November 2016, 09:00:50
Super mit

(?s).*?Luft.*?([-?\d]+)


Klappt es, mal gucken was später angezeigt wird wenn es wieder + Grade sind
Steht dann "+" davor?
Nur zum Verständnis: Warum nimmst du das "(?s)" vorne mit dazu?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 29 November 2016, 09:50:27
Eigentlich sollte bei + Graden nur der Zahlenwert angezeigt werden.

Das (?S) Weiß ich garnicht mehr warum es funktioniert auch ohne. Wurde mir vor 2 Jahren so gesagt als ich das Httpmod modul eingestellt habe.

Hatte die PoolSteuerung nur früher immer im September in den Keller gebracht. Weshalb mir das mit den Negativen Temperaturen nie aufgefallen war.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 November 2016, 10:32:54
Zitat von: JoeALLb
@Vize:
Der klappt mit deinen Testdaten.
>Temperatur<.*?\:\s*(-?[\d,]+)

Hi JoeAllb,

klappt wunderbar, vielen Dank!!!

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 29 November 2016, 10:36:32
@Vize: Prüfe bitte noch, ob du den "," im reading behalten willst, oder ihn ggf. durch einen . ersetzen möchtest..

Bei Logs und Plots machen , manchmal Probleme...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 29 November 2016, 10:40:40
Wird das Komma denn auch mitgenommen, wenn ich das aus der Regex rausnehme?

Im Moment wandele ich mir das aber schon in einen "." um:
reading05OExpr     $val =~ s/,/\./; $val

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 29 November 2016, 11:23:22
Nein, passt perfekt! Wollte nur erinnern, auch daran zu denken!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: lewej am 06 Dezember 2016, 20:26:44
Hallo Leute,

ich würde gerne aus einer Webseite, meinen Software Stand abfragen, jetzt muss man sich dort mit email und Passwort zuerst einlogen. Außerdem benutzen die ein CSRFToken.
Das was ich auslesen will, steht im Quellcode so:

<li data-icon="false">
                    Softwarestand von: Thu Apr 24 12:28:29 2016 +0100
                </li>


Ich habe folgendes konfiguriert:

define testupdate HTTPMOD http://testminiserver/config/ 60
attr testupdate enableCookies 1
#attr testupdate extractAllJSON 1
attr testupdate reAuthRegex {"success":false}
attr testupdate sid1Data   {"email":"test@test.de","password":"123"}
attr testupdate sid1Header1 Content-Type: text/html
attr testupdate sid1Header2 Accept: */*
attr testupdate sid1URL http://testminiserver/accounts/m_login/
attr testupdate group UPDATE
attr testupdate room test


Dann benutzen die noch ein login formular:
<form action="/accounts/m_login/" data-ajax="false" method="POST" id="loginform"><input type='hidden' name='csrfmiddlewaretoken' value='BHfJDuKxFUiPC63qeb8Sgm7HRLza2Hn1' />
            <label>Email<input type="text" id="mail" name="mail"/></label>
            <label>Passwort<input type="password" id="pw" name="pw"/></label>

            <input type="submit" value="Login" />
            <p/>
            <span>
                <a href='/accounts/resetpw/'>Passwort vergessen?</a>
            </span>
        </form>


Das token wird gesetzt, aber sonst sehe ich nichts, hat jemand eine Idee?
Gruß
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: lewej am 09 Dezember 2016, 19:33:16
Zitat von: lewej am 06 Dezember 2016, 20:26:44
Hallo Leute,

ich würde gerne aus einer Webseite, meinen Software Stand abfragen, jetzt muss man sich dort mit email und Passwort zuerst einlogen. Außerdem benutzen die ein CSRFToken.
Das was ich auslesen will, steht im Quellcode so:

<li data-icon="false">
                    Softwarestand von: Thu Apr 24 12:28:29 2016 +0100
                </li>


Ich habe folgendes konfiguriert:

define testupdate HTTPMOD http://testminiserver/config/ 60
attr testupdate enableCookies 1
#attr testupdate extractAllJSON 1
attr testupdate reAuthRegex {"success":false}
attr testupdate sid1Data   {"email":"test@test.de","password":"123"}
attr testupdate sid1Header1 Content-Type: text/html
attr testupdate sid1Header2 Accept: */*
attr testupdate sid1URL http://testminiserver/accounts/m_login/
attr testupdate group UPDATE
attr testupdate room test


Dann benutzen die noch ein login formular:
<form action="/accounts/m_login/" data-ajax="false" method="POST" id="loginform"><input type='hidden' name='csrfmiddlewaretoken' value='BHfJDuKxFUiPC63qeb8Sgm7HRLza2Hn1' />
            <label>Email<input type="text" id="mail" name="mail"/></label>
            <label>Passwort<input type="password" id="pw" name="pw"/></label>

            <input type="submit" value="Login" />
            <p/>
            <span>
                <a href='/accounts/resetpw/'>Passwort vergessen?</a>
            </span>
        </form>


Das token wird gesetzt, aber sonst sehe ich nichts, hat jemand eine Idee?
Gruß

Hallo,
hat jemand eine Idee für mein Problem?

Gruss
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Dezember 2016, 22:12:58
Hallo lewej,

Du solltest als erstes analysieren, was Dein Browser tatsächlich der Reihe nach an den Server schickt. Dazu könntest Du z.B. Die BurpSuite verwenden.
Auf der Basis kannst Du dann die einzelnen Login-Schritte definieren.
Dein sid1Data ist sicher schon falsch und wird so vermutlich nicht funktionieren. Für das CSRF Token kannst Du dann Replacements verwenden.
Siehe https://wiki.fhem.de/wiki/HTTPMOD oder auch https://forum.fhem.de/index.php/topic,56455.msg479909.html#msg479909 als weiteres Beispiel für Replacements.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: zernima am 09 Januar 2017, 17:56:37
Hallo zusammen,
ich versuche  für meine Busch-Jäger free@home über das Webinterface Sachen Lampen zuschalten. Als Ansatz hab ich mich mal mit HTTPMOD beschäftig.

Über Die Burpsuite konnte ich verschiedene Dinge Auslesen und wollte nun wissen ob ich das überhaupt nachbilden kann.

Diese wird mir zum  Beispiel nach dem Einloggen geliefert.

POST /http-bind HTTP/1.1
Host: 192.168.2.10:85
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: 192.168.2.10:85/
Content-Type: text/xml; charset=utf-8
Content-Length: 154
Cookie: installer@busch-jaeger.de/part=configuration
Connection: close

<body rid='488702' sid='eacc3503-8fa2-464d-bd76-1d6d66f46a7e' xmlns='http://jabber.org/protocol/httpbind' key='88d0ce90a833066691e79614e7195b84b0a7c629'/>


Ich hab gesehen das sich das alle 10 Sekunden die "rid" um eins erhöt wird und der Key sich auch ändert.

Im Moment bin ich noch nicht soweit das ich daten ändern kann. Ich wollte erst mal fragen ob es überhaupt Sinn macht an der Stelle weiter zu machen.
Wenn es möglich wäre die free@home Geräte so zu steuern wäre es einfach genial.

Vielen Dank mal  :)

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Januar 2017, 21:11:24
Hallo,

Es ist denkbar, dass man das hinbekommt, aber es wird sicher komplex.
Scheint XMPP über HTTP zu sein. Da ich kein free@home habe, kann ich auch nicht viel helfen.
Poste doch mal einen kompletten Mitschnitt der Requests und Responses vom Einloggen bis zum Schalten eines Lichts. Dann kann ich die Komplexität besser einschätzen.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: zernima am 09 Januar 2017, 21:53:58
Hallo,
vielen Dank mal für die Antwort.

Das hab gerade auch schon rausgefunden. Ich habe noch was BOSH gelesen.

Was brauchst du den Genau für Mitschnitte. Ist bisschen viel glaub  :P

Das Free@home ist echt ein tolles und für die meisten Bauherren einfach zu konfigurierendes System. Fhem als Ergänzung wäre der absolute Hammer.

das ist zum beispiel ein Post vom Lichtschalter

POST /http-bind HTTP/1.1
Host:  192.168.2.10:85
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http:// 192.168.2.10:85/
Content-Type: text/xml; charset=utf-8
Content-Length: 505
Cookie: installer@busch-jaeger.de/part=switching
Connection: close

<body rid='193184' sid='d54a3376-2b56-414d-a285-b5ed03c56de8' xmlns='http://jabber.org/protocol/httpbind' key='e1d4602759ed9c175345b31a60a48b566e5d28c0'><iq xmlns="jabber:client" to="mrha@busch-jaeger.de/rpc" type="set" id="1483994180764"><query xmlns="jabber:iq:rpc"><methodCall><methodName>RemoteInterface.setDatapoint</methodName><params><param><value><string>ABB700C9922C/ch0006/idp0000</string></value></param><param><value><string>1</string></value></param></params></methodCall></query></iq></body>


und das als Response:

HTTP/1.1 200 OK
Server: nginx
Date: Mon, 09 Jan 2017 20:36:21 GMT
Content-Type: text/xml; charset=utf-8
Content-Length: 1691
Connection: close
Access-Control-Max-Age: 7200
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type
Access-Control-Allow-Origin: *

<body sid='d54a3376-2b56-414d-a285-b5ed03c56de8' xmlns:stream='http://etherx.jabber.org/streams' xmlns='http://jabber.org/protocol/httpbind'><message xmlns='jabber:client' type='headline' to='installer@busch-jaeger.de/c3e9fe' from='mrha@busch-jaeger.de'><event xmlns='http://jabber.org/protocol/pubsub#event'><items node='http://abb.com/protocol/update'><item id='1'><update xmlns='http://abb.com/protocol/update'><data>&lt;?xml version=&quot;1.0&quot;?&gt;&lt;project timeStamp=&quot;3060&quot; sessionId=&quot;638aa738&quot; type=&quot;update&quot; mrhaVersion=&quot;2.0.4&quot; mrhaBuild=&quot;3429&quot;&gt;&lt;devices&gt;&lt;device serialNumber=&quot;ABB700C9922C&quot; domainAddress=&quot;9376&quot; state=&quot;modified&quot; commissioningState=&quot;ready&quot;&gt;&lt;channels&gt;&lt;channel state=&quot;modified&quot; i=&quot;ch0003&quot; cid=&quot;ABB70084&quot;&gt;&lt;inputs&gt;&lt;dataPoint state=&quot;modified&quot; i=&quot;idp0000&quot;&gt;&lt;value&gt;1&lt;/value&gt;&lt;/dataPoint&gt;&lt;/inputs&gt;&lt;outputs/&gt;&lt;parameters/&gt;&lt;scenes/&gt;&lt;/channel&gt;&lt;channel state=&quot;modified&quot; i=&quot;ch0006&quot; cid=&quot;ABB70142&quot;&gt;&lt;inputs&gt;&lt;dataPoint state=&quot;modified&quot; i=&quot;idp0000&quot; full=&quot;false&quot;&gt;&lt;value&gt;1&lt;/value&gt;&lt;/dataPoint&gt;&lt;/inputs&gt;&lt;outputs&gt;&lt;dataPoint state=&quot;modified&quot; i=&quot;odp0000&quot; full=&quot;true&quot;&gt;&lt;value&gt;1&lt;/value&gt;&lt;/dataPoint&gt;&lt;/outputs&gt;&lt;parameters/&gt;&lt;scenes/&gt;&lt;/channel&gt;&lt;/channels&gt;&lt;parameters/&gt;&lt;/device&gt;&lt;/devices&gt;&lt;/project&gt;
</data></update></item></items></event></message></body>
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Januar 2017, 19:00:57
Hallo zernima,

ich bin mir nicht sicher, ob das mit HTTPMOD eine gute Idee ist. Es kommt darauf an, ob man das Protokoll im Detail verstehen und nachbilden muss oder ob ein Druck auf den Lichtschalter oder das tatsächliche Anschalten eines Verbrauchers eigentlich immer gleich aussehen und nur eine sid und eine rid sich ändern.
Ideal wäre sicher ein eigenes Modul für Free@home.

Ich würde mich nochmal ab und wieder anmeldenden, den Druck auf den Lichschalter noch ein paar mal aufzeichnen und per diff prüfen, was sich tatsächlich ändert.
Wenn man nur aus den Responses die aktuelle sid extrahieren und beim nächsten mal mitschicken muss, dann kann man das mit HTTPMOD einfach machen.
Die nächste Frage ist dann, wo in der Kommunikation sich Schalter oder Aktoren wiederfinden und wie man das am elegantesten abbilden kann ohne für jeden einzelnen Schalter erst mal die Burp-Suite bemühen zu müssen ...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: zernima am 12 Januar 2017, 21:10:55
Hallo Stefan,

das hab ich mir schin fast gedacht. Darum auch meine Frage. Ich denke auch das ich einen anderen Ansatz suchen muss.
Trotzdem vielen Dank. Und echt tolle Arbeit die du da machst :D
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Amenophis86 am 22 Januar 2017, 08:45:20
Muss das free@home System immer Internet Zugang haben, soll heißen ist es Cloud gebunden, oder kann es auch autark agieren? Nach dem HTML Auswurf zu folge scheint es ja immer über die Buschjäger Homepage zu laufen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: marcus42 am 30 Januar 2017, 22:47:07
Hallo zusammen,

ich mache seit heute meine ersten Gehversuche mit dem HTTPMOD Modul.
Nach Stunden des Rumprobierens gebe ich für heute auf und sende einen Hilferuf ins Forum:

Folgende Attribute sind für ein get gesetzt:


get01Header1 Authorization: Bearer %token%
   get01Name  batteryStatus
   get01Replacement01Mode reading
   get01Replacement01Regex %token%
   get01Replacement01Value token
   get01Replacement02Mode reading
   get01Replacement02Regex %user_vehicle_details_VIN%
   get01Replacement02Value user_vehicle_details_VIN
   get01URL   https://www.services.renault-ze.com/api/vehicle/%user_vehicle_details_VIN%/battery


Die Readings 'token' und 'user_vehicle_details_VIN' existieren direkt im HTTPMOD Device.

Das Ersetzen der Parameter durch den Inhalt der Readings klappt jedoch nicht.

Woran kann das liegen?

Viele Grüße
Marcus
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: marcus42 am 30 Januar 2017, 22:58:41
Jetzt hab Ichs:

replacement01Mode  anstatt get01Replacement01Mode

und

replacement01Regex anstatt get01Replacement01Regex

Danke für Eure Anteilnahme ;-)

Marcus
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: unimatrix am 08 Februar 2017, 10:42:01
Guten Morgen,

in der Funktion HTTPMOD_ExtractReading($$$$$)

ist ein Bug. Bei der Nutzung von XML und XPATH wird die find() Funktion aus LibXML genutzt. Diese liefert nicht immer eine Nodelist zurück, sondern ggf. auch andere Typen. Dementsprechend führt der Aufruf von
push @matchlist, XML::XPath::XMLParser::as_string($node); in Zeile 1774 zu einem Absturz von FHEM, wenn ein Literal zurückgegeben wird.  http://search.cpan.org/dist/XML-LibXML/lib/XML/LibXML/Node.podu (http://search.cpan.org/dist/XML-LibXML/lib/XML/LibXML/Node.podu) beschreibt dieses im Detail.

Der Code sollte wie folgt geändert werden, um zwischen verschiedenen Rückgabewerten zu unterscheiden.

    } elsif ($xpathst) {
        Log3 $name, 5, "$name: ExtractReading $reading with XPath-Strict $xpathst";
        my $nodeset;
        eval {$nodeset = $hash->{ParserData}{XPathStrictNodeset}->find($xpathst)};
        if ($@) {
            Log3 $name, 3, "$name: error in find for XPathStrictNodeset: $@";
        } else {
            if ($nodeset->isa('XML::XPath::NodeSet')) {
               foreach my $node ($nodeset->get_nodelist) {
                  push @matchlist, XML::XPath::XMLParser::as_string($node);
               }
            }else{
                  push @matchlist, $nodeset;
            }
        }
    }


Handelt es sich bei der Rückgabe nicht um ein XML::XPath::NodeSet, dann kann auf weitere Tests mittels isa() verzichtet werden, weil alle Perl mit anderen Typen im skalaren Kontext automatisch "das richtige tut."

Ein Beispiel für ein XPATH was eine Rückgabe liefert, die in der jetzigen Version zum Absturz führt, ist schlichtweg der Ausdruck "1+1" - mit anderen Worten jedwede Art von Berechnung, aber auch XPATH Funktionen, die einen einzelnen Wert zurückliefern. So war mir das aufgefallen, als ich über die Google Directions API ermitteln wollte, wie oft ich auf einer Verbindung umsteigen muss, indem ich folgenden XPATH anwendete:

count((//departure_stop)[position()>1]/name/text())
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 Februar 2017, 17:38:05
Hallo unimatrix,

vielen Dank für den Hinweis, das baue ich so ein.

Gruss / Thanx
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 13 Februar 2017, 22:39:03
Wenn ich zwei Seiten mit je zwei gleichen Regex auswerten möchte um vier Readings zu erhalten müsste das wie folgt funktionieren, falls ich https://forum.fhem.de/index.php/topic,33765.0.html (https://forum.fhem.de/index.php/topic,33765.0.html) richtig umgesetzt habe.

Ich vermute aber ich habe einen Denkfehler und die zweite Seite wird doppelt abgerufen. Geht das auch anders?

define TEST HTTPMOD http://1.1.1.1/ 300
attr TEST reading1Name NAME1a
attr TEST reading1Regex SUCHE1
attr TEST reading2Name NAME1b
attr TEST reading2Regex SUCHE2

attr TEST get21Name NAME2a
attr TEST get21URL http://2.2.2.2/
attr TEST get21Poll 1
attr TEST get21Regex SUCHE1

attr TEST get22Name NAME2b
attr TEST get22URL http://2.2.2.2/
attr TEST get22Poll 1
attr TEST get22Regex SUCHE2


Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: unimatrix am 15 Februar 2017, 06:58:58
Zitat von: ares am 13 Februar 2017, 22:39:03
Wenn ich zwei Seiten mit je zwei gleichen Regex auswerten möchte um vier Readings zu erhalten müsste das wie folgt funktionieren, falls ich https://forum.fhem.de/index.php/topic,33765.0.html (https://forum.fhem.de/index.php/topic,33765.0.html) richtig umgesetzt habe.

Ich vermute aber ich habe einen Denkfehler und die zweite Seite wird doppelt abgerufen. Geht das auch anders?

define TEST HTTPMOD http://1.1.1.1/ 300
attr TEST reading1Name NAME1a
attr TEST reading1Regex SUCHE1
attr TEST reading1Name NAME1b
attr TEST reading2Regex SUCHE2

attr TEST get21Name NAME2a
attr TEST get21URL http://2.2.2.2/
attr TEST get21Poll 1
attr TEST get21Regex SUCHE1

attr TEST get22Name NAME2b
attr TEST get22URL http://2.2.2.2/
attr TEST get22Poll 1
attr TEST get22Regex SUCHE2


Danke
Manfred
Du verwendest 2 mal reading1name.

Gesendet von meinem P9000 mit Tapatalk

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Februar 2017, 10:23:17
Zitat von: ares am 13 Februar 2017, 22:39:03
Wenn ich zwei Seiten mit je zwei gleichen Regex auswerten möchte um vier Readings zu erhalten müsste das wie folgt funktionieren, falls ich https://forum.fhem.de/index.php/topic,33765.0.html (https://forum.fhem.de/index.php/topic,33765.0.html) richtig umgesetzt habe.

Ich vermute aber ich habe einen Denkfehler und die zweite Seite wird doppelt abgerufen. Geht das auch anders?

define TEST HTTPMOD http://1.1.1.1/ 300
attr TEST reading1Name NAME1a
attr TEST reading1Regex SUCHE1
attr TEST reading1Name NAME1b
attr TEST reading2Regex SUCHE2

attr TEST get21Name NAME2a
attr TEST get21URL http://2.2.2.2/
attr TEST get21Poll 1
attr TEST get21Regex SUCHE1

attr TEST get22Name NAME2b
attr TEST get22URL http://2.2.2.2/
attr TEST get22Poll 1
attr TEST get22Regex SUCHE2


Danke
Manfred


Lies dir mal diesen Abschnitt in der Commandref genauer durch:
The regular expressions used will take the value that matches a capture group. This is the part of the regular expression inside (). In the above example "([\d\.]+)" refers to numerical digits or points between double quotation marks. Only the string consiting of digits and points will match inside (). This piece is assigned to the reading. You can also use regular expressions that have several capture groups which might be helpful when parsing tables. In this case an attribute like

    reading02Regex something[ \t]+([\d\.]+)[ \t]+([\d\.]+)

could match two numbers. When you specify only one reading02Name like

    reading02Name Temp

the name Temp will be used with the extension -1 and -2 thus giving a reading Temp-1 for the first number and Temp-2 for the second. You can also specify individual names for several readings that get parsed from one regular expression with several capture groups by defining attributes

    reading02-1Name
    reading02-2Name ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 15 Februar 2017, 14:11:32
Danke @unimatrix, das war aber nur ein Kopierfehler beim Erstellen des einfachen Beispiels. Ich habe es oben ausgebessert, es sollte natürlich lauten;
attr TEST reading2Name NAME1b

@JoeALLb
Das hatte ich auch gelesen, jedoch vielleicht nicht richtig verstanden da ich nicht glaube, dass es mein Problem löst. reading02-1Name, reading02-2Name usw. möchte ich gar nicht, er soll nur jeweils das erste auslesen auch wenn es mehrere Treffer gibt.

Was ich eigentlich möchte ist in einem HTTPMOD Device mehrere Seiten einlesen. Die regular expressions sollen für jeweils eine Seite und nicht für alle Seiten gelten und dann Readings mit wählbarem Namen erzeugen.
Über reading02Regex werden jedoch alle Seiten durchsucht und mit get02Regex kann ich nur ein Regex pro Seite definieren und nicht mehrere. Vielleicht habe ich auch hier etwas nicht richtig verstanden und es geht doch?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Februar 2017, 14:17:07
Zitat von: ares am 15 Februar 2017, 14:11:32
Danke @unimatrix, das war aber nur ein Kopierfehler beim Erstellen des einfachen Beispiels. Ich habe es oben ausgebessert, es sollte natürlich lauten;
attr TEST reading2Name NAME1b

@JoeALLb
Das hatte ich auch gelesen, jedoch vielleicht nicht richtig verstanden da ich nicht glaube, dass es mein Problem löst. reading02-1Name, reading02-2Name usw. möchte ich gar nicht, er soll nur jeweils das erste auslesen auch wenn es mehrere Treffer gibt.

Was ich eigentlich möchte ist in einem HTTPMOD Device mehrere Seiten einlesen. Die regular expressions sollen für jeweils eine Seite und nicht für alle Seiten gelten und dann Readings mit wählbarem Namen erzeugen.
Über reading02Regex werden jedoch alle Seiten durchsucht und mit get02Regex kann ich nur ein Regex pro Seite definieren und nicht mehrere. Vielleicht habe ich auch hier etwas nicht richtig verstanden und es geht doch?

mit reading02-2Name kannst du einen Namen für die zweite Regex-Gruppe vergeben.
Du machst also EINEN Regex pro Seite für jedes GET, und hast darin mehrere Gruppen.
Wie das Reading dann heißen soll definierst du in dem zuvor genannten Attribut(en).

Ich kenne jedoch dinen Wunsch... diesen habe ich beim Modulautor auch schon platziert.
Mein Lösungsvorschlag wäre zB, bei get21URL  eine Variable wie $get20URL angeben zu können, sodass
die Seite auch nur einmkal abgerufen werden muss.

Ich habe manche Hardware, die auf viele HTTP-Anfragen empfindlich reagiert. ;-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 15 Februar 2017, 19:39:02
@JoeALLb Danke für die Hilfe, aber mit einem Regex komme ich nicht klar. Ich dachte eher an etwas wie :
attr TEST get21URL http://2.2.2.2/
attr TEST get21 Poll 1
attr TEST get21_1Name NAME2a
attr TEST get21_1Regex SUCHE1
attr TEST get21_2Name NAME2b
attr TEST get21_2Regex SUCHE2

... oder die Möglichkeit "get21" im Regex abfragen zu können. Aber dank der unzähligen Möglichkeiten werde ich auch so eine für mich befriedigende Lösung finden.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: unimatrix am 15 Februar 2017, 19:59:06
Zitat von: ares am 15 Februar 2017, 19:39:02
@JoeALLb Danke für die Hilfe, aber mit einem Regex komme ich nicht klar. Ich dachte eher an etwas wie :
attr TEST get21URL http://2.2.2.2/
attr TEST get21 Poll 1
attr TEST get21_1Name NAME2a
attr TEST get21_1Regex SUCHE1
attr TEST get21_2Name NAME2b
attr TEST get21_2Regex SUCHE2

... oder die Möglichkeit "get21" im Regex abfragen zu können. Aber dank der unzähligen Möglichkeiten werde ich auch so eine für mich befriedigende Lösung finden.
Schreib doch mal das Beispiel dann finden wir vll. eine passende Regexp.

Gesendet von meinem P9000 mit Tapatalk

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 15 Februar 2017, 20:29:17
Das Gateway, welches ich auslesen möchte, hat weit über hundert Werte verstreut auf vielen Seiten mit teilweise optionalem Inhalt und damit nicht vorhersehbarem Aufbau.

Ein Ausschnitt aus meinen aktuellen Tests:

define ISGweb HTTPMOD http://192.168.0.134/ 60
attr ISGweb reading01Name Start.Betriebsart
attr ISGweb reading01Regex aval39.[^=]+.[^=]+.[^=]+..([^"]+)
attr ISGweb reading01MaxAge 60
attr ISGweb reading01MaxAgeReplacement ISG offline
attr ISGweb reading01MaxAgeReplacementMode text

attr ISGweb get10Name ISGweb_10
attr ISGweb get10Poll 1
attr ISGweb get10URL http://192.168.0.134/?s=1,0
attr ISGweb reading1001Name Info.Anlage.Heizen.Vorlauftemperatur
attr ISGweb reading1001Regex VORLAUFTEMPERATUR[^0-9]+([0-9,]+)
attr ISGweb reading1002Name Info.Anlage.Heizen.Rücklauftemperatur
attr ISGweb reading1002Regex RÜCKLAUFTEMPERATUR[^0-9]+([0-9,]+)

attr ISGweb get20Name ISGweb_20
attr ISGweb get20Poll 1
attr ISGweb get20URL http://192.168.0.134/?s=2,0
attr ISGweb reading2001Name Diagnose.Status.Betriebsstatus.Schaltprogramm_aktiv
attr ISGweb reading2001Regex "key">SCHALTPROGRAMM AKTIV[^0-9]+([0-9\.])
attr ISGweb reading2001MaxAge 60
attr ISGweb reading2001MaxAgeReplacement 0
attr ISGweb reading2001MaxAgeReplacementMode text
attr ISGweb reading2002Name Diagnose.Status.Betriebsstatus.Verdichter
attr ISGweb reading2002Regex "key">VERDICHTER[^0-9]+([0-9\.])
attr ISGweb reading2002MaxAge 60
attr ISGweb reading2002MaxAgeReplacement 0
attr ISGweb reading2002MaxAgeReplacementMode text


Und eine Beispielseite: http://192.168.0.134/?s=2,0
(die Seiten im Menü haben dann leider nochmal Unterseiten, es sind also doch ein paar  :'( und keine Möglichkeit das irgendwie gesammelt als vernünftige Version abrufbar zu machen)
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de">
<head>
<title>STIEBEL ELTRON Reglersteuerung</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="content-language" content="de" />
<meta name="robots" content="noindex,nofollow" />
<meta name="keywords" content="" />
<meta name="description" content="" />
 
  <link rel="shortcut icon" href="./pics/brlogo.ico">
  <!-- does not exist link rel="stylesheet" href="./css/netzwerk.css" type="text/css" media="all" /-->
  <link rel="stylesheet" type="text/css" href="./css/slider/ste_slider.css" />
<!-- Blueprint CSS framework -->
<link rel="stylesheet" href="./css/blueprint/screen.css" type="text/css" media="screen, projection" />
<link rel="stylesheet" href="./css/blueprint/print.css" type="text/css" media="print" />
<!--[if lt IE 8]><link rel="stylesheet" href="./css/blueprint/ie.css" type="text/css" media="screen, projection" /><![endif]-->

<link rel="stylesheet" href="./css/layout.css" type="text/css" media="all" />
 
<link rel="stylesheet" href="./css/sifr.css" type="text/css" media="all" />
<link rel="stylesheet" href="./css/thickbox.css" type="text/css" media="all" />

<link rel="stylesheet" type="text/css" href="./css/jquery.jqplot.min.css" />

 
 
<script type="text/javascript" src="./js/jquery.min.js"></script>
<script type="text/javascript" src="./js/thickbox.js"></script>
<script type="text/javascript" src="./js/sifr.js"></script>
<script type="text/javascript" src="./js/sifr_sw.js"></script>
<script type="text/javascript" src="./js/scripts.js"></script>
  <script type="text/javascript" src="./js/json2.js"></script>
  <script type="text/javascript" src="./js/plugins/jquery-ui-1.8.6.custom.min.js"></script>
    <script type="text/javascript" src="./js/setDNS1.js"></script>

<!-- [if IE] -->
<script language="javascript" type="text/javascript" src="./js/excanvas.min.js"></script>
<!-- [endif] -->

<!-- for dateAxisRenderer.js -->
<script language="javascript" type="text/javascript" src="./js/plugins/Date.min.js"></script>
<!-- BEGIN: load jqplot -->
<script language="javascript" type="text/javascript" src="./js/jquery.jqplot.min.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.dateAxisRenderer.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.barRenderer.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/jqplot.categoryAxisRenderer.js"></script>
<!-- END: load jqplot -->
 
  <!-- BEGIN: load slider -->
<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.core.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.widget.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.mouse.js"></script>
<script language="javascript" type="text/javascript" src="./js/plugins/slider/jquery.ui.slider.js"></script>
<!-- END: load slider -->
 
   
  <!-- BEGIN: Uhrzeit -->
    <!-- END:  Uhrzeit -->
 
</head>
<body>
<div id="header">
<div class="head curdef">
<div id="meta">
<div id="login">
      Sie sind angemeldet als: <strong>...</strong>
        <form method="POST" name="logout" style="display:inline;margin-left:25px;">
          <input type="submit" alt="Logout" name="logout" value="Logout" class="logoutbutton"/>
        </form>
      </div>
</div>
    <div class="eingestelle_sprache"><strong><a href="?s=5,3" style="color:white">DEUTSCH</a></strong></div>
    <div id="Uhrzeit"></div>
<div class="title">
      <a href="." onclick="return checkChanges(this);" title="zur Startseite">
        <img src="./pics/title.png" alt="Servicewelt" />

      </a>
          </div>
<div class="logo"><a href="." onclick="return checkChanges(this);" title="zur Startseite" class="home_link">&nbsp;</a></div>
</div>
</div>


<div class="container" id="page">
  <div id="main" >
  <div id="SpacerFirefox"></div>
    <div id="nav">
      <div class="clear"></div>
            <div class="nav left defaultfirst">
        <div class="l left">&nbsp;</div>
        <div class="c left link1">
          <a onclick="return checkChanges(this);" href="?s=0">START</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link2">
          <a >INFO</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
              <a onclick="return checkChanges(this);" href="?s=1,0">ANLAGE</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=1,1">WÄRMEPUMPE</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=1,2">LIZENZBESTIMMUNGEN</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=1,3">BEDIENUNG UND INSTALLATION</a>
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link3">
          <a >DIAGNOSE</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
              <a onclick="return checkChanges(this);" href="?s=2,0">STATUS</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=2,1">BUSTEILNEHMER</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=2,2">FEHLERLISTE</a>
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link4">
          <a >PROGRAMME</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
              <a onclick="return checkChanges(this);" href="?s=3,0">HEIZPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,1">WARMWASSERPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,2">LÜFTERPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,3">PARTYPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,4">FERIENPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,5">TROCKENHEIZPROGRAMM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=3,6">GRUNDEINSTELLUNG</a>
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left default parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link5">
          <a >EINSTELLUNGEN</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second ">
                        <li>
              <a onclick="return checkChanges(this);" href="?s=4,0">HEIZEN</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,1">WARMWASSER</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,2">LÜFTEN</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,3">SOLAR</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,5">SOMMERBETRIEB</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,6">ZEIT/DATUM</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,7">INBETRIEBNAHME</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=4,8">FACHMANN</a>
            </li>
                    </ul>
        </div>
              </div>
            <div class="nav left defaultlast parent">
        <div class="l left">&nbsp;</div>
        <div class="c left link6">
          <a >PROFIL</a>
        </div>
        <div class="r left">&nbsp;</div>
        <div class="clear"></div>
                <div class="second">
          <ul class="second last">
                        <li>
              <a onclick="return checkChanges(this);" href="?s=5,0">Netzwerk</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=5,1">Sicherheit</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=5,2">Anlagenbild</a>
            </li>
                      <li>
              <a onclick="return checkChanges(this);" href="?s=5,3">SPRACHE</a>
            </li>
                    </ul>
        </div>
              </div>
            <div class="clear"></div>
    </div>
        <div id="sub_nav" class="span-24"><div class="left main sifr span-9" style="width: 45%">ANLAGE</div>
<div class="span-15 last">
</div>
<div class="clear"></div></div>
        <form id="werte" action="#" onsubmit="saveValues(this);return false;"><div id="content">
    <div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">RAUMTEMPERATUR</th></tr>  <tr class="even">
    <td class="key">RAUMISTTEMP. HK1</td>
    <td class="value">21,1 °C</td>
  </tr>
  <tr class="odd">
    <td class="key">RAUMSOLLTEMP. HK1</td>
    <td class="value">21,1 °C</td>
  </tr>
  <tr class="even">
    <td class="key">RAUMFEUCHTE HK1</td>
    <td class="value">0,0 %</td>
  </tr>
  <tr class="odd">
    <td class="key">RAUMISTTEMP. HK2</td>
    <td class="value">21,5 °C</td>
  </tr>
  <tr class="even">
    <td class="key">RAUMSOLLTEMP. HK2</td>
    <td class="value">21,5 °C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">RAUMFEUCHTE HK2</td>
    <td class="value round-rightbottom">0,0 %</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">HEIZEN</th></tr>  <tr class="even">
    <td class="key">AUSSENTEMPERATUR</td>
    <td class="value">0,6 °C</td>
  </tr>
  <tr class="odd">
    <td class="key">ISTWERT HK1</td>
    <td class="value">32,3 °C</td>
  </tr>
  <tr class="even">
    <td class="key">SOLLWERT HK1</td>
    <td class="value">32,0 °C</td>
  </tr>
  <tr class="odd">
    <td class="key">ISTWERT HK2</td>
    <td class="value">31,2 °C</td>
  </tr>
  <tr class="even">
    <td class="key">SOLLWERT HK2</td>
    <td class="value">32,5 °C</td>
  </tr>
  <tr class="odd">
    <td class="key">VORLAUFTEMPERATUR</td>
    <td class="value">34,9 °C</td>
  </tr>
  <tr class="even">
    <td class="key round-leftbottom">RÜCKLAUFTEMPERATUR</td>
    <td class="value round-rightbottom">31,2 °C</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">WARMWASSER</th></tr>  <tr class="even">
    <td class="key">WW-ISTTEMP.</td>
    <td class="value">48,2 °C</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">WW-SOLLTEMP.</td>
    <td class="value round-rightbottom">45,5 °C</td>
  </tr>
</table></div><div class="span-11 prepend-1" style="float:right"><table class="info"><tr><th colspan="2" class="round-top">LÜFTEN</th></tr>  <tr class="even">
    <td class="key">ZULUFT IST LÜFTERDREHZAHL</td>
    <td class="value">0 Hz</td>
  </tr>
  <tr class="odd">
    <td class="key">ZULUFT SOLL VOLUMENSTROM</td>
    <td class="value">0 m³/h</td>
  </tr>
  <tr class="even">
    <td class="key">ABLUFT IST LÜFTERDREHZAHL</td>
    <td class="value">0 Hz</td>
  </tr>
  <tr class="odd">
    <td class="key round-leftbottom">ABLUFT SOLL VOLUMENSTROM</td>
    <td class="value round-rightbottom">0 m³/h</td>
  </tr>
</table></div><div class="span-11 append-1" style="float:left"><table class="info"><tr><th colspan="2" class="round-top">WÄRMEERZEUGER</th></tr>  <tr class="even">
    <td class="key round-leftbottom">HEIZSTUFE</td>
    <td class="value round-rightbottom">2 </td>
  </tr>
</table></div><div class="span-24">&nbsp;</div>
    </div>  </form></div>
</div>
</div>
</div>
<div id="footer">
<!--[if IE]>
<style type="text/css">
#footer
{

height:260px;
}
#versionsNummer
{
position:relative;
top:-33px;
}
</style>

      <![endif]-->
<div class="span-24 last footer_middle curdef">

<div class="span-8 prepend-top" style="height:145px">
<div class="span-3">

<img src="./pics/ste_footer_website.png" />
</div>
<div class="span-5 last">
<p>

          Weitere Informationen zu unserem Produktprogramm und aktuelle Serviceangebote finden Sie unter <a href="http://www.stiebel-eltron.de" target="_blank" class="extern">www.stiebel-eltron.de</a>
</p>
</div>
</div>
 
    <div class="bordered span-1"></div>
<div class="span-6 prepend-top">
<div class="span-2">
  <img src="./pics/footer_tel.png" />
</div>
<div class="span-4 last">
<p>
Unsere Service-Hotline erreichen Sie unter<br /><span class="big">05531 702 90015</span>
</p>
</div>
  </div>
    <div class="bordered span-1"></div>
<div class="span-7 prepend-top last">
<p>
Das Neueste rund um die Servicewelt <br /><a href="http://www.stiebel-eltron.de/erneuerbare-energien/kundenservice/servicewelt/isg/" target="_blank" class="extern">servicewelt</a>
</p>
  </div>
   
</div>
  <div class="links span-23 prepend-top append-1 last footer_middle">
    <div class="span-17">
        <a class="intern" href="?s=1,2&arch=datenschutzerklaerung" onclick="return checkChanges(this);">Datenschutz</a>
      &nbsp;
      <p style="margin-top:8px" class="right" id="versionsNummer">v8.2.0</p>
    </div>
  <div class="copyright span-6 last curdef">
  &copy; STIEBEL ELTRON 2016
  </div>
  </div>
</div>

</body>
</html>


Und meine Frau hat auch schon die Visualisierung in smartVISU und Diagramme angefordert, also viel Fleißarbeit. Wenn die Regex also jeweils nur für eine Seite gelten würde das schneller für fhem, zuverlässiger in der Erkennung und übersichtlicher für mich sein.
Eventuell macht für die Übersichtlichkeit auch eine Trennung in 2 getrennte Device (Einstellungen und IST-Werte) Sinn. Ist dann eigentlich sichergestellt, dass die 2 Device nicht parallel die Seiten auslesen, da ich mir nicht sicher bin ob das Gateway damit umgehen kann.

Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Februar 2017, 20:39:29
Zitat von: ares am 15 Februar 2017, 20:29:17
Und meine Frau hat auch schon die Visualisierung in smartVISU und Diagramme angefordert, also viel Fleißarbeit. Wenn die Regex also jeweils nur für eine Seite gelten würde das schneller für fhem, zuverlässiger in der Erkennung und übersichtlicher für mich sein.
Eventuell macht für die Übersichtlichkeit auch eine Trennung in 2 getrennte Device (Einstellungen und IST-Werte) Sinn. Ist dann eigentlich sichergestellt, dass die 2 Device nicht parallel die Seiten auslesen, da ich mir nicht sicher bin ob das Gateway damit umgehen kann.

Und welche Werte möchtest Du nun aus diesem HTML in zwei readings rauslesen?
Du solltest uns vollständige Infos geben, damit wir dir helfen können!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 15 Februar 2017, 20:50:41
Nicht 2 Readings, eher 2 Device mit jeweils 100 Readings.
Meine eigentliche Frage ist aber inzwischen geklärt - pro Get nur ein Regex. Hätte ja auch sein können, dass ich nur falsch gelesen habe und das doch irgendwie geht.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Februar 2017, 20:51:04
Nachtrag:
Sowas wie dies würde RAUMSOLLTEMP. HK1 und RAUMSOLLTEMP. HK2
jeweils in ein Reading übernehmen...
Ist doch genau das, was du suchst, oder?

attr TEST get21URL http://2.2.2.2/XXXX
attr TEST get21 Poll 1
attr TEST get21Regex RAUMSOLLTEMP. HK1\p{Any}*?value">([\d,.]+)\p{Any}*?HK2\p{Any}*?value">([\d,.]+)
attr TEST get21_1Name SollHK1
attr TEST get21_2Name SollHK2


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Februar 2017, 20:52:06
Zitat von: ares am 15 Februar 2017, 20:50:41
Nicht 2 Readings, eher 2 Device mit jeweils 100 Readings.
Meine eigentliche Frage ist aber inzwischen geklärt - pro Get nur ein Regex. Hätte ja auch sein können, dass ich nur falsch gelesen habe und das doch irgendwie geht.
...aber pro Regex sind mehrere Fundstellen möglich, siehe mein Beispiel oben.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 15 Februar 2017, 21:35:50
Zitat von: JoeALLb am 15 Februar 2017, 20:51:04
Nachtrag:
Sowas wie dies würde RAUMSOLLTEMP. HK1 und RAUMSOLLTEMP. HK2
jeweils in ein Reading übernehmen...
Ist doch genau das, was du suchst, oder?

attr TEST get21URL http://2.2.2.2/XXXX
attr TEST get21 Poll 1
attr TEST get21Regex RAUMSOLLTEMP. HK1\p{Any}*?value">([\d,.]+)\p{Any}*?HK2\p{Any}*?value">([\d,.]+)
attr TEST get21_1Name SollHK1
attr TEST get21_2Name SollHK2


Ich habe meinen Regex-Tester  mit dem in den Internals angezeigten String getestet, was dort auch funktioniert aber in fhem dann kein Ergebnis bringt.
attr ISGweb get10Regex RAUMSOLLTEMP\. HK1[^0-9]+([0-9,]+).+RAUMSOLLTEMP\. HK2[^0-9]+([0-9,]+)

Deinen Vorschlag habe ich wie folgt übernommen, obwohl mein Regex-Test damit nicht klar gekommen ist:
attr ISGweb get10Name ISGweb_10
attr ISGweb get10Poll 1
attr ISGweb get10URL http://192.168.0.134/?s=1,0
attr ISGweb get10CheckAllReadings 1
attr ISGweb get10Regex RAUMSOLLTEMP. HK1\p{Any}*?value">([\d,.]+)\p{Any}*?HK2\p{Any}*?value">([\d,.]+)
attr ISGweb get10_1Name SollHK1
attr ISGweb get10_2Name SollHK2


mit folgenden 2 Fehlermeldungen:
ISGweb: unknown attribute get10_1Name. Type 'attr ISGweb ?' for a detailed list.
ISGweb: unknown attribute get10_2Name. Type 'attr ISGweb ?' for a detailed list.

entspricht ja auch nicht der Doku
(get|set|reading)[0-9]+Regex

Folgende 2 Readings wurden wie in der Doku beschrieben erstellt:
ISGweb_10-1
ISGweb_10-2

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 16 Februar 2017, 08:48:52
Zitat von: ares am 15 Februar 2017, 21:35:50
mit folgenden 2 Fehlermeldungen:
ISGweb: unknown attribute get10_1Name. Type 'attr ISGweb ?' for a detailed list.
ISGweb: unknown attribute get10_2Name. Type 'attr ISGweb ?' for a detailed list.

entspricht ja auch nicht der Doku
(get|set|reading)[0-9]+Regex


Ändere _ in - und es funktioniert.
Anbei ein funktionierendes Beispiel:


define xx HTTPMOD http://www.google.com 600
attr xx userattr get21-1Name get21-2Name get21Name get21Regex get21URL
attr xx get21-1Name Name1Version
attr xx get21-2Name Name2DEB
attr xx get21Name getName
attr xx get21Regex as of ([\d-\s]+)\p{Any}*?href\p{Any}*?href="([^"]+)
attr xx get21URL https://fhem.de/fhem.html
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 16 Februar 2017, 10:10:37
Vielen Dank!
Hast Du auch noch eine gute Seite zum Testen der Regex inklusive {Any} bzw. wie kommst Du auf die Regex?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 16 Februar 2017, 10:20:29
die schreibe ich mittlerweile aus dem Kopf...
\p{Any} ist wie . jedoch mit zeilenwechsel.

wenn du
...RegOp=s
setzt, matched . auch auf newlines.

du könntest due den regexbuddy kaufen... sehr schönes programm.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 17 Februar 2017, 15:08:51
Zitat von: JoeALLb am 16 Februar 2017, 10:20:29
die schreibe ich mittlerweile aus dem Kopf...
\p{Any} ist wie . jedoch mit zeilenwechsel.

wenn du
...RegOp=s
setzt, matched . auch auf newlines.

du könntest due den regexbuddy kaufen... sehr schönes programm.

Wenn Du die aus dem Kopf so schnell hinbekommst, kannst Du mir dann bitte mit folgenden Regex unter die Arme greien?

Problem 1 ist ein optionales Vorzeichen:
<tr class="odd">
  <td class="key">TEMP1</td>
  <td class="value">-12,3 °C</td>
</tr>
<tr class="odd">
  <td class="key">TEMP2</td>
  <td class="value">45,6 °C</td>
</tr>
<tr class="even">
  <td class="key round-leftbottom">TEMP3</td>
  <td class="value round-rightbottom">-32,1 °C</td>
</tr>
<tr class="even">
  <td class="key round-leftbottom">TEMP4</td>
  <td class="value round-rightbottom">65,4 °C</td>
</tr>


so klappt es leider nicht, mein Problem sind die möglichen Minus vorher:
TEMP1[^0-9]+([-0-9,]+)
TEMP2[^0-9]+([-0-9,]+)
TEMP3[^0-9]+([-0-9,]+)
TEMP4[^0-9]+([-0-9,]+)


Problem 2 ist, dass ich gerne 2 Regex verketten möchte um 1.179 zu erhalten:
<div class="fuel-price-type"><span>Diesel</span><span class="mtsk-label"> MTS-K Preis </span></div> <div class="price-box"> <div class="price-input" ng-class="{'price-dirty': dirty}"> <span ng-click="minus()" class="decrease-price">-</span><span class="price-field"><span ng-bind="display_preis">1.17 </span> <sup ng-bind="suffix">9</sup></span><span ng-click="plus()" class="increase-price">+</span> </div>

<span>Diesel</span>[^0-9]+([0-9\.]+)
suffix[^0-9]+([0-9\.]+)


Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 17 Februar 2017, 15:24:21
Für einen Kaffe, mach ich viel ;-)

Einfach kopieren und den Namen für temp1-4 anpassen
TEMP3\p{Any}+?>([-\d,]+)

Das zweite schau ich mir noch an
Mit einer Gruppe fällt mir nichts ein, aber so bekommst du es in zwei gruppen

Diesel.*?">([\d\.]+)(?:.*?suffix">)(\d+)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 20 Februar 2017, 20:49:42
Zitat von: JoeALLb am 17 Februar 2017, 15:24:21
Für einen Kaffe, mach ich viel ;-)

Einfach kopieren und den Namen für temp1-4 anpassen
TEMP3\p{Any}+?>([-\d,]+)

Das zweite schau ich mir noch an
Mit einer Gruppe fällt mir nichts ein, aber so bekommst du es in zwei gruppen

Diesel.*?">([\d\.]+)(?:.*?suffix">)(\d+)


Der Regex funktioniert, vielen Dank. Ich bin durch die Tipps schon viel weiter gekommen und würde den Kaffe daher nur zu gern spendieren. Ich habe mich jedoch nochmal in den Regex verrannt, vielleicht hast Du aber erneut aus dem Kopf eine schnelle Lösung.




MaxAge scheint nicht mit timestamp-on-change reading zu funktionieren. Außerdem sind derzeit 49 Seiten in einem Device geplant, da sich der Zielserver mit parallelen Zugriffen immer wieder aufhängt und so das MaxAge wahrscheinlich nicht ganz unproblematisch funktioniert. Zum Glück kann man aber für 2 Regex das gleiche reading als Ziel angeben und so hoffentlich das MaxAge durch 2 Regex ersetzen und so den Wert zusammen mit dem Rest aktualisieren was für meinen Fall sinnvoll ist.

Problem:
Die Seiten lassen sich über die Überschrift identifizieren. Einige der Seiten zeigen Schalter als SCHLÜSSELWÖRTER an, falls die Schalter an sind, ansonsten nichts. Ich würde die SCHLÜSSELWÖRTER gerne mit 1 (vorhanden) bzw. 0 (nicht vorhanden) als reading bekommen.

Beispielseite (identifiziert durch TEXT1 vor dem SCHLÜSSELWORT und bei Bedarf TEXT2 nach dem SCHLÜSSELWORT:
beliebig > Überschrift > beliebig > SCHLÜSSELWORT1 > beliebig > Endetag > beliebig > konstante_Zahl_mit_0_und_1 > beliebig

der Positiv-Check funktionert:
Überschrift.+SCHLÜSSELWORT1.+Endetag.+([1])

den Negativ-Check bekomme ich aber auf Grund der beliebigen Texte vorher und nachher nicht hin, da es dadurch ja immer ein passendes Ergebnis gibt:
Überschrift.+(?!SCHLÜSSELWORT1).+Endetag.+([0])

und noch eine Frage zum obigen Beispiel:
Kann ich z.B. das Endetag direkt in 0/1 umwandeln oder bin ich auf die passende Zahl nach dem Endetag bzw. getMap angewiesen?

Danke
Manfred

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 20 Februar 2017, 21:13:40
Sorry Manfred,
vielleicht liegt es an der Uhrzeit, aber ich erkenne die Frage in deinem Text nicht.

Prinzipiell trifft dieser negativtext schon und funktioniert somit auch, in welchem Beispiel funktioniert er denn nicht korrekt?
Schick mir doch ein paar (vll. sogar mehrere Texte die es zu matchen gibt, dann kann man den regex "stabiler" bauen als wenn man ihn nur auf einen Text prüft.
Also Posiviv und Negativbeispiele...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 22 Februar 2017, 22:09:30
Durch mein vieles Testen ist das userattr des device inzwischen sehr lang geworden, da beim Löschen von Attributen das userattr nicht mit bereinigt wird.
Wie bereinige ich das userattr am einfachsten?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Februar 2017, 22:53:10
Einfach löschen. Das Modul erzeugt die Einträge automatisch.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 22 Februar 2017, 22:57:47
Zitat von: StefanStrobel am 22 Februar 2017, 22:53:10
Einfach löschen. Das Modul erzeugt die Einträge automatisch.

Gruss
   Stefan

Danke für die schnelle Antwort, Löschen habe ich mich nicht getraut.

Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: peterk_de am 22 Februar 2017, 23:04:27
Hallo zusammen,

ich wollte mir die Messwerte  von einer nahgelegenen offiziellen  Luftüberwachungs-Station in FHEM holen. Die haben eine App (Lüsa), und Wireshark brachte folgende URL hervor:

http://www.mu.sachsen-anhalt.de/lau/luesa/tmp/LUESA-APP-json.txt

Nett. Nun wollte ich mir das mit HTTPMOD vornehmen und meine Messstation rauspopeln, allerdings komm ich mit den vorhandenen JSON-Filtern da nicht weit. Mit Regexen schon gar nicht (wobei, naja, auf jeden fall wäre das übel ;)) Ist irgendwie sowas wie JSONPath in Planung? Sonst muss ich mir da selbst mal was bauen...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Februar 2017, 21:39:13
Hallo,

Bisher hatte ich keine Pläne JSONPath einzubauen, aber vermutlich wäre es kein großer Aufwand und ähnlich wie XPath zu machen.
Du kannst es gerne mal ausprobieren und einen Patch als Vorschlag posten.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 01 März 2017, 13:02:52
Ich benötige "set[0-9]+IMap" mit einem Komma, bekomme die Syntax aber nicht ganz auf die Reihe.

ohne Komma im Pfad funktioniert es
attr MyDevive set01IMap /?s=1:path_1,  /?s=4:path_2
mit Komma splittet er leider ungewollt
attr MyDevive set01IMap /?s=1,2,3:path_1,  /?s=4,5,6:path_2

Kann mir bitte jemand unter die Arme greifen oder bestätigen dass dies aktuell nicht möglich ist?

Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 01 März 2017, 21:16:19
Hallo Manfred,

das Komma ist das Trennzeichen für die Map.
Statt dem Map-Feature könntest Du aber versuchen alles in einer Expression zu konvertieren.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 02 März 2017, 19:20:32
Hallo Stefan,

IExpr funktioniert perfekt und erleichtert mir sogar den Rest.
attr ISGweb set00IMap 3.0.0:3.0.0, 3.0.1:3.0.1

Um die bei mir doppelten Angaben mit möglichen Tippfehlern zu vermeiden hätte ich aber erst folgende Version ohne Klartext versucht:
attr ISGweb set00IMap 3.0.0,3.0.1
Die Auswahl im Device sieht erstmal super aus, das Ergebnis ist jedoch, dass 3.0.0 als Ergebnis 3.0.1 ausführt und auf 3.0.1 mit "set value 3.0.1 did not match defined map" antwortet.

Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 04 März 2017, 16:08:07
Hallo Stefan,

funktionieren Umlaute irgendwie?
attr TEST set00Name Umlaute
attr TEST set00IMap 1:Eintüten


In den Attributen und der Auswahl über den Internals wird es korrekt angezeigt, aber beim Ausführen (auch über die Auswahl) wird ein Fehler ausgegeben:
set TEST Umlaute Eintüten
set value Eint�ten did not match defined map


Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 März 2017, 23:21:28
Hallo Manfred,

Das mit den Umlauten muss ich mir mal ansehen. Ich hoffe ich komme am Wochenende dazu.
Bei Deinem vorletzten Post verstehe ich die Intention der Maps leider nicht.
Kann es sein, dass Du gar nichts mappen möchtest und dass ein Hint-Attribut sinnvoller wäre?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 07 März 2017, 08:17:33
Hallo Stefan,

stimmt, ich hätte Hint verwenden müssen, das Ergebnis ist aber aus meiner Sicht dennoch falsch.

Viele Grüße
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 07 März 2017, 18:11:39
Hallo zusammen.

Und schon wieder ein neuer :-)

Ich möchte mich auf der https://cloud.vallox.com Seite anmelden und scheitere bei der Übergabe von username und passwort.

Bei mir ist es momentan so, dass ich über den Browser ein Login machen kann und anschließend z.B. einen get Request mit curl von der Shell aus machen kann.
Dabei wird die komplette Session Autorisierung von mir kopiert und mit keep-alive offen gehalten.

In diesem Zustand kann ich mit get oder post kommunizieren und meine KWL zuhause reagiert auch darauf. Die Daten werden hierbei mit json übertragen und ich kann die modbus Felder mit der Dokumentation entsprechend zuordnen.

Laut trace im Browser soll die Anmeldung als username=user@email.de&passwort=yyyy übergeben werden.

Im Forum habe ich leider nicht viel zu Login, Passwort, Username und co gefunden. Das Beispiel "Example for a multi step login procedure" , so wie die Erläuterungen zu den Attributen von httpmod haben mich leider noch nicht zum Erfolg geführt. Meine Konfigurationserrungenschaften und das FHEM Log kommen dann jetzt im Anschluss.

Ich wäre für jede Hilfe Dankbar
     Christian


So sieht die Konfig im Moment aus

defmod vallox HTTPMOD https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 60
attr vallox userattr sid1Data sid1Header1 sid1Header2 sid1Header3 sid1URL
attr vallox extractAllJSON 1                                         <==== Das ist für später, da die Daten als json kommen
attr vallox reAuthRegex password-input                                <==== httpmod erkennt schon, dass ein login fällig ist
attr vallox sid1Data username=demo@example&password=demo             <==== es gibt ne demo auf der Seite, da kann jeder dann testen ;-)
attr vallox sid1Header1 Content-Type: text/html
attr vallox sid1Header2 Content-Type application/x-www-form-urlencoded
attr vallox sid1Header3 Accept: */*
attr vallox sid1URL https://cloud.vallox.com/login                    <==== das ist geraten

setstate vallox 2017-03-07 10:19:13 X-Frame-Options 1
[/font][/size][/size]


Und hier ein Ausschnitt aus dem FHEM Log mit debug 5
Im Stream sind auch noch Kommentare von mir "===================="

2017.03.07 17:54:40 4: vallox: GetUpdate called (update)
2017.03.07 17:54:40 4: vallox: update timer modified: will call GetUpdate in 60.0 seconds at 2017-03-07 17:55:40
2017.03.07 17:54:40 4: vallox: AddToQueue adds update, initial queue len: 0
2017.03.07 17:54:40 5: vallox: AddToQueue adds type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, no data, no headers, retry 0
2017.03.07 17:54:40 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:40 4: vallox: HandleSendQueue sends request type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, No Data, No Header,
timeout 2

================ Hier geht der erste Aufruf raus. Laut Doku erst mal ohne Authentifizierung

2017.03.07 17:54:40 4: HttpUtils url=https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.07 17:54:40 5: HttpUtils request header:
GET /cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

================ Der redirect ist auch im Browser zu sehen

2017.03.07 17:54:40 4: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2017.03.07 17:54:40 4: HttpUtils https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect to https://cloud.vallox.com:443/
2017.03.07 17:54:40 4: HttpUtils url=https://cloud.vallox.com:443/
2017.03.07 17:54:41 5: HttpUtils request header:
GET / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

================ Code 200 ist schön und die Cookies kommen, sowie der html Anmeldebildschirm

2017.03.07 17:54:41 4: https://cloud.vallox.com:443/: HTTP response code 200
2017.03.07 17:54:41 4: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4222
2017.03.07 17:54:41 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3Awn-HXcdToMySDe4XCFUGOWK_.luaMrmxK6rCWaxXv2XfUottdIZ%2FVGMsneFl3YS0wRpQ; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:41 GMT
Set-Cookie: _csrfToken=KztXkOor-3Uic0SKKyazWncUNyZOz-DtmBWs; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:41 GMT
Connection: close
2017.03.07 17:54:41 4: vallox: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3Awn-HXcdToMySDe4XCFUGOWK_.luaMrmxK6rCWaxXv2XfUottdIZ%2FVGMsneFl3YS0wRpQ; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:41 GMT
Set-Cookie: _csrfToken=KztXkOor-3Uic0SKKyazWncUNyZOz-DtmBWs; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:41 GMT
Connection: close,

================ In dem gewusel habe ich dann "password-input" zur Erkennung eines neuen Logins verwendet "attr vallox reAuthRegex password-input"


Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.3</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a><br><a href="/register_data">Register description</a></div><div class="copyright col-sm-4">&copy; Vallox 2017</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>no error
2017.03.07 17:54:41 3: vallox: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html><html...") at (eval 3911) line 1.

2017.03.07 17:54:41 5: vallox: ExtractSid called, context reading, num
2017.03.07 17:54:41 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input                  <====== Der String kommt aus der html Seite
2017.03.07 17:54:41 4: vallox: CheckAuth decided new authentication required                          <===== Das ist ja schon mal gut
2017.03.07 17:54:41 4: vallox: Auth called with Steps: 1
2017.03.07 17:54:41 4: vallox: AddToQueue adds auth1, initial queue len: 0, prio

================ Wie in der httpmod Doku beschrieben erfolgt nun der Zweite Zugriff mit sid Attributen, aber meine sind halt falsch :-(
================Jetzt kommen noch diverse Versuche, bis dann wieder die Loginseite erscheint

2017.03.07 17:54:41 5: vallox: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=demo@example&password=demo, header Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*, retry 0
2017.03.07 17:54:41 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:41 4: vallox: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=demo@example&password=demo,
header: Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*,
timeout 2
2017.03.07 17:54:41 4: HttpUtils url=https://cloud.vallox.com/login
2017.03.07 17:54:41 4: vallox: AddToQueue adds update, initial queue len: 0
2017.03.07 17:54:41 5: vallox: AddToQueue adds type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, no data, no headers, retry 1
2017.03.07 17:54:41 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:41 5: vallox: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2017.03.07 17:54:41 4: vallox: CheckAuth requeued request update after auth, retryCount 0 ...
2017.03.07 17:54:41 5: HttpUtils request header:
POST /login HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*
Content-Length: 43

2017.03.07 17:54:41 3: vallox: Read callback: request type was auth1 retry 0, no headers, body empty,
Error: https://cloud.vallox.com/login: empty answer received
2017.03.07 17:54:41 5: vallox: ExtractSid called, context sid, num 1
2017.03.07 17:54:42 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:42 4: vallox: HandleSendQueue sends request type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, No Data, No Header,
timeout 2
2017.03.07 17:54:42 4: HttpUtils url=https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.07 17:54:42 5: HttpUtils request header:
GET /cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.03.07 17:54:42 4: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2017.03.07 17:54:42 4: HttpUtils https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect to https://cloud.vallox.com:443/
2017.03.07 17:54:42 4: HttpUtils url=https://cloud.vallox.com:443/
2017.03.07 17:54:43 5: HttpUtils request header:
GET / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.03.07 17:54:43 4: https://cloud.vallox.com:443/: HTTP response code 200
2017.03.07 17:54:43 4: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4222
2017.03.07 17:54:43 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3AQokX0iKI0OqsCLjsfy-0p2db.qJs5jxd41Gxgyh1sl5zdTWC%2BmMFmZecbDTeZuE%2Fh718; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:43 GMT
Set-Cookie: _csrfToken=Q8esUzGC-fGrOI5ObbNk98ehF6jAvXNigYRQ; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:43 GMT
Connection: close
2017.03.07 17:54:43 4: vallox: Read callback: request type was update retry 1,
Header: HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3AQokX0iKI0OqsCLjsfy-0p2db.qJs5jxd41Gxgyh1sl5zdTWC%2BmMFmZecbDTeZuE%2Fh718; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:43 GMT
Set-Cookie: _csrfToken=Q8esUzGC-fGrOI5ObbNk98ehF6jAvXNigYRQ; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:43 GMT
Connection: close,

======================= Da ist die Loginseite wieder

Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.3</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a><br><a href="/register_data">Register description</a></div><div class="copyright col-sm-4">&copy; Vallox 2017</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>no error


============= Okay, ich sehe es ein, es ist noch nix zu parsen, aber das wird schon noch

2017.03.07 17:54:43 3: vallox: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html><html...") at (eval 3915) line 1.

2017.03.07 17:54:43 5: vallox: ExtractSid called, context reading, num
2017.03.07 17:54:43 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input
2017.03.07 17:54:43 4: vallox: CheckAuth decided new authentication required
2017.03.07 17:54:43 4: vallox: Authentication still required but no retries left - did last authentication fail?     <==== Das ist nicht schön
2017.03.07 17:54:43 3: vallox: no parsed JSON structure available                               <==== Nach der Anmeldung sollte was kommen
2017.03.07 17:54:43 5: vallox: Read starts parsing response to update with defined readings:
2017.03.07 17:54:43 3: vallox: Read response to update didn't match any Reading
2017.03.07 17:54:43 5: vallox: HandleSendQueue called, qlen = 0

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 März 2017, 20:15:19
Hallo Christian,

vergleich doch einfach die Header, die Du mit HTTPMOD sendest mit denen, die Dein Browser sendet. Dann siehst Du was falsch ist / was fehlt.
Spontan würde ich sagen, dass zumindest die Cookies / CSRF-Tokens fehlen.

unter https://forum.fhem.de/index.php/topic,56455.msg479909.html#msg479909 habe ich auch mal ein komplexeres Beispiel gepostet.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 März 2017, 11:06:39
Hallo Stefan,

vielen Dank für die Infos.

Mit den cookies und Token hatte ich die Hoffnung, dass httpmod das schon irgendwie selber steuert. Ich verwende halt immer gerne so wenig abweichende Konfigurationen wie möglich, dann sehe ich was unbedingt notwendig ist.

Aus dem anderen Thread https://forum.fhem.de/index.php/topic,68452.msg599313.html#msg599313 (https://forum.fhem.de/index.php/topic,68452.msg599313.html#msg599313) habe ich das mit der burp-Suite auch schon übernommen. Es scheint mir für einen Trace schon weit besser geeignet als die Browser Funktionalität. Danke für den Tipp, auch wenn ich ihn schon mehrfach gelesen habe, aber halt nicht beherzigt.

burp-Suite free edition: https://portswigger.net/burp/freedownload (https://portswigger.net/burp/freedownload)

- Hier habe ich das .jar File herunter geladen
- Kurzer check von Java > 1.6 okay
- Starten von "java -jar -Xmx1024m ./burpsuite_free_v1.7.19.jar"
- Im Browser auf den Proxy "127.0.0.1" für alles umstellen
- Im burp unter "Proxy | Intercept | Intercept is On" auf "Intercept is Off" umschalten
- Bei "Proxy | Http history" sieht man dann den gesamten Browser Verkehr
- Mit der rechten Maustaste kann man dann noch "add to Scope" für die gewünschte "http*" Adresse auswählen
- unter Filter "Shop only in Scope" auswählen und schon wird es übersichtlicher

Für die, die es interessiert ich betreibe für die Entwicklung das FHEM in einer Solaris 11.3 nonglobal Zone.
Smartvisu habe ich mit einigem anderen Zeug im Apache untergebracht.
Rpi2 mit FHEM dient dann zur Produktion

Im Moment ist jedoch alles noch im Aufbau und ich möchte zuerst eine gescheite Datenbasis haben.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 März 2017, 16:50:42
Hallo nochmal.

Das Login geht schon mal und wird hier später auch noch eingefügt.

@Stefan: hast Du noch einen Tipp für mein erste reading? Ich muss die folgende Zeile noch im httpmod umsetzen.

GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1488987678344 HTTP/1.1

Im log sieht das ganze schon mal so aus

2017.03.08 16:45:22 5: Cmd: >get vallox KWL_Status<
2017.03.08 16:45:22 5: vallox: get called with KWL_Status
2017.03.08 16:45:22 5: vallox: get found option KWL_Status in attribute get01Name
2017.03.08 16:45:22 4: vallox: get will now request KWL_Status, no optional value
2017.03.08 16:45:22 4: vallox: AddToQueue adds get01, initial queue len: 0
2017.03.08 16:45:22 5: vallox: AddToQueue adds type get01 to URL /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, no data, header Accept: application/json, text/javascript, */*
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2017.03.08 16:45:22 5: vallox: HandleSendQueue called, qlen = 1
2017.03.08 16:45:22 5: vallox: HandleSendQueue is adding Cookies: _csrf=s%3AmA5bv1opXskRAheyG8gtIafl.uAo8iod8fjyCB14w27JVKLqf0CEEr6zacASrct95yJQ; _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; lang=en
2017.03.08 16:45:22 4: vallox: HandleSendQueue sends request type get01 to URL /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, No Data,
header: Accept: application/json, text/javascript, */*
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3AmA5bv1opXskRAheyG8gtIafl.uAo8iod8fjyCB14w27JVKLqf0CEEr6zacASrct95yJQ; _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; lang=en,
timeout 2
2017.03.08 16:45:22 4: HttpUtils url=/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.08 16:45:22 3: vallox: Read callback: request type was get01 retry 0,
Header: HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Wed, 08 Mar 2017 15:44:32 GMT
Connection: close, body empty,
Error: /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: malformed or unsupported URL          <====== da mach ich was falsch
2017.03.08 16:45:22 5: vallox: looking for Cookies in HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Wed, 08 Mar 2017 15:44:32 GMT
Connection: close
2017.03.08 16:45:22 5: vallox: Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
2017.03.08 16:45:22 4: vallox: Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
2017.03.08 16:45:22 5: vallox: Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
2017.03.08 16:45:22 4: vallox: Cookie: _csrfToken Wert zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo Rest Path=/
2017.03.08 16:45:22 5: vallox: ExtractSid called, context get, num 01
2017.03.08 16:45:22 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input
2017.03.08 16:45:22 4: vallox: CheckAuth decided no authentication required                                                <==== Das ist der Erfolg von heute



Und burp liest das als request mit:

GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1488987678344 HTTP/1.1
Host: cloud.vallox.com
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
DNT: 1
x-csrf-token: uE73SS2n-Wiv9MKo0rak7Etar06WiKmUoJnM
X-Requested-With: XMLHttpRequest
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: lang=de; _csrf=s%3A_D-SJhPVdhGh93H3mK0nEY0z.gLnGnlkAqPNtt6PCTEVJhYrHdBgF5zTJGQVZT2ggUcM; _csrfToken=uE73SS2n-Wiv9MKo0rak7Etar06WiKmUoJnM; connect.sid=s%3A1X3hOs2ZyyiM3iZHF47HofLX2a58v80e.HKn9Ynpj8UZlwqNg2y2tGzC2Dq8jhRk8bXSTEggQwFM
Connection: close


Wenn ich das get im burp erneut absende bekomme ich auch immer schön die json Liste mit dem Status meiner KWL.

Viele Grüße
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 08 März 2017, 19:24:56
Zitat von: ch.eick am 08 März 2017, 16:50:42
Das Login geht schon mal und wird hier später auch noch eingefügt.

Mach's nicht so spannend Cristian...  ;)

Zeig her dein HTTPMOD-Device mit den login Daten und Attributen!  ;D

Vielleicht kann ich davon was zur Lösung meines login-Problems verwenden.

Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: unimatrix am 09 März 2017, 20:10:27
Zitat von: StefanStrobel am 08 Februar 2017, 17:38:05
Hallo unimatrix,

vielen Dank für den Hinweis, das baue ich so ein.

Gruss / Thanx
   Stefan

ist das noch geplant? Habe heute ein fhemupdate gemacht und da war mir aufgefallen dass mein FHEM immer abstürzt :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 März 2017, 10:55:06
Hallo Andreas
gaaanz ruhig....es kommt ja, sobald ich ein reading habe. Bin busy im Moment.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FhemPiUser am 11 März 2017, 20:37:21
Gibt es die Möglichkeit mit einem attribut HTTPMOD zu sagen, dass es nur einen Teil einer HTTP-Seite abrufen soll? Ich möchte eine Webseite parsen, die ziemlich lang ist, benötige aber eigentlich nur die ersten 2kbyte. Optimal wäre, wenn ich ihm sagen könnte, er soll nur die ersten 2 kbyte abrufen...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 März 2017, 16:09:14
Hallo FhemPiUser,

so eine Möglichkeit gibt es derzeit nicht.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 März 2017, 16:11:37
Hallo Unimatrix,

bei mir hab ich es schon eingebaut, aber bevor ich es einchecke möchte ich noch ein paar andere Kleinigkeiten erweitern, die noch nicht fertig sind.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 14 März 2017, 00:16:23
Hi Stefan,
ich bin überwältigt von diesem Modul... heißt, auch komplett überfordert. Seit über zwei Stunden versuche ich, eine ASPX Seite zu besurfen, einen Input Wert zu vergeben (Datum) und einen Submit Button zu triggern.
Ich habe es probiert mit requestData sowie set01Name, set01ParseResponse, set01URL, set01TextArg {"set" :{"tbDatumBeginn.value" :"$val" }}
Es kommt ein Code 200 zurück, und im Log steht "Read response to update didn't match any Reading"
Kann ich irgendwo sehen, was überhaupt zurückkommt? Also, ob mein Request überhaupt funktioniert?

//edit: OK, mit verbose=4 konnte ich mir inzwischen das Ergebnis angucken: es ist die normale Seite hinter der URL. Wie kann ich nun ein submit einer Form auslösen? Funktionieren eigentlich Javascripte im HTTPMOD Aufruf?

Danke für jede Hilfe, die mich weiterbringt
Ronny
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 März 2017, 19:01:05
Hallo Ronny,

wenn Du nur Daten an eine Seite schickst und das Ergebnis nicht parsen möchtest bzw. keine Werte aus dem Ergebnis extrahieren möchtest, dann matcht auch kein Reading und das ist auch kein Problem.
JavaScript in gelesenen Seiten wird in HTTPMOD nicht ausgewertet. Um Daten an den Server zu schicken musst Du einfach den GET / POST Request nachbauen und die Formulardaten mitschicken. Dazu musst Du natürlich wissen, wie der Browser die Daten an den Server schickt. Am besten schneidest Du dazu die normale Kommunikation zwischen Browser und Server mit einem Proxy mit. Burp bietet sich dafür an. Dann kannst Du das ganze mit HTTPMOD nachbilden.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 14 März 2017, 23:14:43
Hi Stefan,

ja, das Ziel ist, ein paar Zahlen aus dem Response in ein Reading zu schreiben. Javascript muss ich gar nicht unbedingt auswerten oder nutzen.
Mit den DEV Tools werde ich aus dem Request nicht schlau: da ruft eine aspx Datei ein Webresource.axd mit einer sich ständig ändernden GUID im Parameter (SID?) und darin wieder irgendwelche (Base?) codierten Zeichen auf. Ich blicke da nicht durch.
Das Ziel an sich ist ja "nur", ein Datum Input Value zu ändern und einen Submit der Form auszulösen. Gibt es evtl. irgendwo einen Beispielcodeschnipsel für dieses Vorhaben?

Gruß
Ronny
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mahowi am 14 März 2017, 23:31:22
Ich habe hier ständig PERL WARNINGS im Log:
2017.03.14 23:17:09.302 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1592.
2017.03.14 23:17:09.303 1: stacktrace:
2017.03.14 23:17:09.303 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1592)
2017.03.14 23:17:09.303 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1618)
2017.03.14 23:17:09.303 1:     main::HTTPMOD_FlattenJSON           called by ./FHEM/98_HTTPMOD.pm (2109)
2017.03.14 23:17:09.304 1:     main::HTTPMOD_InitParsers           called by ./FHEM/98_HTTPMOD.pm (2356)
2017.03.14 23:17:09.304 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (428)
2017.03.14 23:17:09.304 1:     main::__ANON__                      called by fhem.pl (672)


Ist das bekannt? Außer der Warnung hat das Ganze keine Auswirkungen.




Kann ich eigentlich auch irgendwie ein "HTTP DELETE" mit HTTPMOD abschicken? Ich kann bei meiner Heizungssteuerung (tado°) per PUT in den manuellen Modus mit einer bestimmten Temperatur schalten. Um aber wieder in den Automatikmodus zu gehen, muß ich die manuelle Kontrolle per "DELETE" wieder löschen. Die Beschreibung gibt es unter /api/v2/homes/<homeID>/zones/1/overlay auf The Tado API v2 in Stephen C Phillips' Blog (http://blog.scphillips.com/posts/2017/01/the-tado-api-v2/).
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BillyPbg am 15 März 2017, 12:53:13

Hallo Stefan,

habe den selben LOG-Effekt wie mahowi, habe Dir deshalb einen Abruf zusammengestellt:

PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1592.

Raw-Definition ohne API-Key:

defmod TANK_DIESEL HTTPMOD https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX 600
attr TANK_DIESEL userattr reading01Name reading01Regex readingEncode requestHeader1 requestHeader2
attr TANK_DIESEL alias Tankstellen-Abruf: DIESEL
attr TANK_DIESEL enableControlSet 1
attr TANK_DIESEL extractAllJSON 1
attr TANK_DIESEL icon gasoline
attr TANK_DIESEL reading01Name datenstand
attr TANK_DIESEL reading01Regex Date:([^<>$]+)Content-Type
attr TANK_DIESEL readingEncode UTF-8
attr TANK_DIESEL requestHeader1 Content-Type: application/json
attr TANK_DIESEL requestHeader2 Accept: */*
attr TANK_DIESEL room TANKSTELLE
attr TANK_DIESEL showError 1
attr TANK_DIESEL showMatched 1
attr TANK_DIESEL stateFormat stations_01_price € (stations_01_name, datenstand)
attr TANK_DIESEL verbose 2

setstate TANK_DIESEL 1.109 € (Supermarkt-Tankstelle am real,- Markt WEILHEIM KALTENMOSER STR. 28,  Wed, 15 Mar 2017 11:10:06 GMT
\
)
setstate TANK_DIESEL 2017-03-15 07:50:08 LAST_ERROR read from https://creativecommons.tankerkoenig.de:443 timed out
setstate TANK_DIESEL 2017-03-15 12:10:06 LAST_REQUEST update
setstate TANK_DIESEL 2017-03-15 12:10:06 MATCHED_READINGS stations_17_id stations_03_street stations_20_lat stations_02_id stations_02_postCode stations_14_houseNumber stations_24_name stations_03_name stations_05_price ok stations_18_price stations_24_brand stations_08_id stations_10_id stations_23_dist stations_16_lng stations_02_price stations_12_street stations_20_brand stations_22_houseNumber stations_22_lng stations_05_postCode stations_20_houseNumber stations_01_lat stations_17_name stations_04_street stations_20_dist stations_15_street stations_20_isOpen stations_22_price stations_18_lng stations_18_name stations_14_postCode stations_16_name stations_12_brand stations_07_lat stations_09_place stations_04_brand stations_23_id stations_06_houseNumber stations_22_dist stations_23_postCode stations_08_isOpen stations_19_brand data stations_16_street stations_04_isOpen stations_03_lng stations_07_lng stations_01_name stations_23_place stations_21_street stations_13_price stations_14_price stations_16_postCode stations_06_lng stations_02_name stations_12_isOpen stations_03_price stations_23_street stations_06_name stations_17_isOpen stations_20_postCode stations_10_isOpen stations_10_brand stations_12_place stations_19_lng stations_21_houseNumber stations_17_lng stations_02_street stations_15_isOpen stations_07_price stations_18_postCode stations_11_place stations_21_name stations_15_postCode stations_03_lat stations_13_isOpen stations_13_houseNumber stations_01_lng stations_19_postCode stations_09_isOpen license stations_05_id stations_19_street stations_21_dist stations_13_place stations_01_brand stations_15_dist stations_15_id stations_21_lng stations_01_price stations_09_houseNumber stations_04_postCode stations_14_name stations_11_postCode stations_24_isOpen stations_13_postCode stations_05_houseNumber stations_11_street stations_18_lat stations_09_street stations_06_brand stations_20_id stations_11_houseNumber stations_11_isOpen stations_15_houseNumber stations_13_street stations_01_isOpen stations_19_dist stations_23_brand stations_03_dist stations_18_dist stations_23_lat stations_01_place stations_18_isOpen stations_12_price stations_13_brand stations_03_id stations_24_dist stations_07_brand stations_17_dist stations_03_isOpen stations_14_brand stations_21_id stations_14_isOpen stations_03_brand stations_07_postCode stations_09_dist stations_09_lng stations_13_name stations_07_houseNumber stations_15_place stations_12_name stations_06_postCode stations_02_isOpen stations_05_street stations_09_price stations_22_id stations_14_lat stations_18_place stations_01_postCode stations_08_name stations_24_postCode stations_08_place stations_09_brand stations_18_brand stations_22_brand stations_03_postCode stations_22_isOpen stations_16_houseNumber stations_15_lng stations_09_postCode stations_02_lat stations_10_place stations_16_id stations_21_isOpen stations_17_postCode stations_19_lat stations_23_houseNumber stations_23_lng stations_08_postCode stations_13_dist stations_09_id stations_18_id stations_14_street stations_05_isOpen status stations_02_houseNumber stations_05_brand stations_24_houseNumber stations_14_id stations_21_lat stations_20_street stations_07_id stations_10_dist stations_01_street stations_07_isOpen stations_14_dist stations_17_brand stations_08_houseNumber stations_11_price stations_05_name stations_08_lng stations_04_place stations_24_price stations_12_houseNumber stations_09_name stations_16_place stations_04_lng stations_17_street stations_23_price stations_13_lng stations_10_lng stations_06_price stations_17_lat stations_19_price stations_13_id stations_10_houseNumber stations_21_place stations_10_postCode stations_19_isOpen stations_01_id stations_06_lat stations_01_dist stations_24_place stations_13_lat stations_15_brand stations_02_lng stations_08_lat stations_19_place stations_24_lat stations_11_dist stations_16_dist stations_21_price stations_17_price stations_07_street stations_02_brand stations_07_place stations_08_street stations_07_name stations_15_name stations_22_postCode stations_10_name stations_06_place stations_08_brand stations_21_brand stations_20_name stations_12_postCode stations_19_houseNumber stations_15_price stations_22_lat stations_06_dist stations_05_place stations_12_dist stations_18_street stations_12_lng stations_04_dist stations_09_lat stations_17_houseNumber stations_20_lng stations_06_isOpen stations_11_brand stations_08_dist stations_22_street stations_04_price stations_20_place stations_11_lat stations_12_id stations_07_dist stations_06_street stations_16_isOpen stations_15_lat stations_19_name stations_17_place stations_21_postCode stations_08_price stations_19_id stations_10_street stations_10_price stations_12_lat stations_16_brand stations_11_id stations_16_lat stations_22_place stations_14_place stations_24_street stations_23_isOpen stations_04_lat stations_02_dist stations_10_lat stations_14_lng stations_20_price stations_05_dist stations_04_houseNumber stations_04_id stations_03_place stations_02_place stations_06_id stations_16_price stations_05_lat stations_04_name stations_24_lng stations_24_id stations_11_lng stations_22_name stations_23_name stations_05_lng stations_11_name datenstand
setstate TANK_DIESEL 2017-03-15 12:10:06 UNMATCHED_READINGS
setstate TANK_DIESEL 2017-03-15 12:10:06 data MTS-K
setstate TANK_DIESEL 2017-03-15 12:10:06 datenstand  Wed, 15 Mar 2017 11:10:06 GMT
\

setstate TANK_DIESEL 2017-03-15 12:10:06 license CC BY 4.0 -  https://creativecommons.tankerkoenig.de
setstate TANK_DIESEL 2017-03-15 12:10:06 ok 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_brand Supermarkt-Tankstelle am real,- Markt
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_dist 9.4
setstate TANK_DIESEL 2017-03-15 05:49:59 stations_01_houseNumber 
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_id 51d4b640-a095-1aa0-e100-80009459e03a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_lat 47.8429
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_lng 11.1488
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_name Supermarkt-Tankstelle am real,- Markt WEILHEIM KALTENMOSER STR. 28
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_place WEILHEIM
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_postCode 82362
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_price 1.109
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_01_street KALTENMOSER STR. 28
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_brand Pinoil
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_dist 8.6
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_houseNumber 5
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_id fb0290d2-2d9a-4f19-a26f-77796c76535a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_lat 47.83567
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_lng 11.1437473
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_name Pinoil
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_place Weilheim
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_postCode 82362
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_price 1.119
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_02_street Alpenstraße
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_brand JET
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_dist 9.2
setstate TANK_DIESEL 2017-03-15 06:50:00 stations_03_houseNumber 4 a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_id 51d4b5f9-a095-1aa0-e100-80009459e03a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_lat 47.8421
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_lng 11.1465
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_name JET WEILHEIM PUETRICHSTR. 22
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_place WEILHEIM
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_postCode 82362
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_price 1.119
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_03_street PUETRICHSTR. 22
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_brand Avanti
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_dist 15.8
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_houseNumber 4 a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_id 47a417dc-a6f9-4890-b8e6-34672ab32f13
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_lat 47.8971
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_lng 11.18832
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_name Pähl Unterhirschberg 4 a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_place Pähl
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_postCode 82396
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_price 1.119
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_04_street Unterhirschberg
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_brand
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_dist 17.2
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_houseNumber 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_id 00060247-0001-4444-8888-acdcffffffff
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_lat 47.665634155273
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_lng 11.200600624084
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_name Tankstelle Mp-21
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_place Murnau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_postCode 82418
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_price 1.119
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_05_street Olympiastraße
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_brand bft-Tankstelle Vogl
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_dist 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_houseNumber 17
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_id ef32dd0b-25e4-4396-8d70-5da0f95ba05f
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_lat 47.793619
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_lng 11.063541
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_name bft-Tankstelle Vogl
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_place Peissenberg
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_postCode 82380
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_price 1.124
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_06_street Schongauer Str.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_brand Agip
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_dist 0.9
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_houseNumber 22
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_id 27db1860-c0c0-475e-a5ae-b929e4a64a58
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_lat 47.793153136275
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_lng 11.062878823082
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_name PEISSENBERG - SCHONGAUER STR.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_place Peissenberg
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_postCode 82380
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_07_street Schongauer Str.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_brand ESSO
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_dist 2.4
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_houseNumber 
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_id fa1550e0-7e5a-46d6-aa56-035b22e24c46
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_lat 47.802602
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_lng 11.077094
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_name Esso Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_place PEISSENBERG
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_postCode 82380
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_08_street HAUPTSTR. 22
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_brand ESSO
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_dist 8.4
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_houseNumber 
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_id 86324f67-0c8d-4d40-9a8f-a83f1205aef5
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_lat 47.832063
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_lng 11.146121
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_name Esso Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_place WEILHEIM
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_postCode 82362
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_09_street ALPENSTR. 13
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_brand Agip
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_dist 9.4
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_houseNumber 29
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_id 28008ffd-4ab5-45a0-9816-655f78b357cc
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_lat 47.84385
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_lng 11.14761
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_name WEILHEIM - PÜTRICHSTRASSE 29
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_place Weilheim
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_postCode 82362
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_10_street Pütrichstrasse
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_brand V-Markt Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_dist 9.7
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_houseNumber 60
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_id 26aa0cf8-e354-41fc-b685-9634fcf069bf
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_lat 47.788022
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_lng 10.927195
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_name V-Markt Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_place Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_postCode 86971
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_11_street Ammergauerstr.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_brand V-Markt Schongau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_dist 12
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_houseNumber 15
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_id 3ea2eb9e-d5cd-48b6-9719-bf6bc23f920e
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_lat 47.816647
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_lng 10.903036
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_name V-Markt Schongau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_place Schongau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_postCode 86956
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_12_street Wiesenweg
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_brand ESSO
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_dist 15.9
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_houseNumber 
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_id 27830077-5238-45e4-a453-24b11a8fdb5e
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_lat 47.68305
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_lng 11.203945
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_name Esso Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_place MURNAU
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_postCode 82418
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_13_street WEILHEIMER STR. 12
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_brand OMV
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_dist 16.7
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_houseNumber 5
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_id 13109c2c-280b-4865-9d87-50bdb2b2a83f
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_lat 47.67205
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_lng 11.20129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_name Murnau Garmischer Strasse 5
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_place Murnau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_postCode 82418
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_price 1.129
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_14_street Garmischer Str.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_brand BayWa
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_dist 8.5
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_houseNumber 11
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_id 906e4c49-6b9a-4a61-afe5-d6b7c581efb2
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_lat 47.789597
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_lng 10.9421625
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_name BayWa Tankstelle  Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_place Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_postCode 86971
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_price 1.139
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_15_street Schönriedelstr.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_brand ESSO
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_dist 12
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_houseNumber 
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_id 0223354e-a2af-4dbc-94ea-244b9bd2a2f1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_lat 47.812611
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_lng 10.901358
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_name Esso Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_place SCHONGAU
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_postCode 86956
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_price 1.139
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_16_street BAHNHOFSTR. 18
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_brand OMV
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_dist 14.1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_houseNumber 2
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_id 96f33206-b762-499c-ac26-a24ca4d799df
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_lat 47.807
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_lng 10.87044
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_name Schongau Tannenberger Straße 2
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_place Schongau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_postCode 86956
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_price 1.139
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_17_street Tannenberger Str.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_brand JET
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_dist 18.6
setstate TANK_DIESEL 2017-03-15 11:40:06 stations_18_houseNumber 58
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_id 51d4b484-a095-1aa0-e100-80009459e03a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_lat 47.8263
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_lng 11.2975
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_name JET SEESHAUPT WEILHEIMER STR. 17
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_place SEESHAUPT
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_postCode 82402
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_price 1.139
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_18_street WEILHEIMER STR. 17
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_brand Freie Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_dist 7.6
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_houseNumber 58
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_id 2fed8d8c-dbeb-4a25-b561-7fc0c5e70a0a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_lat 47.7695
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_lng 11.155
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_name CU24h Tankstelle GbR
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_place Huglfing
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_postCode 82386
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_price 1.147
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_19_street Hauptstr.
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_brand V-Markt Saulgrub
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_dist 13.4
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_houseNumber 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_id e503b63e-8e1d-43a8-995b-1e4aadb27029
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_lat 47.6674
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_lng 11.02537
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_name V-Markt Saulgrub
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_place Saulgrub
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_postCode 82442
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_price 1.149
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_20_street Am Mühlbach
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_brand AVIA Xpress
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_dist 17.1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_houseNumber 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_id ebe9460e-1d82-427c-a50d-816853f21fa3
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_lat 47.70405
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_lng 10.862682
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_name AVIA Automatenstation
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_place Steingaden
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_postCode 86989
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_price 1.159
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_21_street Ammergauer Straße
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_brand ARAL
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_dist 10.2
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_houseNumber 19
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_id c483b0fc-7668-4135-bd88-5ddd9893716e
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_lat 47.7986679
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_lng 10.9212027
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_name Aral Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_place Peiting
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_postCode 86971
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_price 1.169
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_22_street Schongauer Straße
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_brand ARAL
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_dist 19.4
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_houseNumber 56
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_id 41ffbaba-e407-4afd-917b-3cebaa930264
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_lat 47.9579659
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_lng 11.1021957
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_name Aral Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_place Dießen
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_postCode 86911
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_price 1.189
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_23_street Lachener Straße
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_brand ARAL
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_dist 16.3
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_houseNumber 8a
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_id f8a5705a-1640-4fe3-b2a7-90b7da06143d
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_isOpen 1
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_lat 47.8816261
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_lng 10.8914948
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_name Aral Tankstelle
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_place Kinsau
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_postCode 86981
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_price 1.199
setstate TANK_DIESEL 2017-03-15 12:10:06 stations_24_street Bahnhofstraße
setstate TANK_DIESEL 2017-03-15 12:10:06 status ok



Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BillyPbg am 15 März 2017, 12:58:08
...

LOG (verbose 5, stacktrace 1): um 11:00:06.385, 11:00:06.403 und 11:00:06.474 Uhr
[code]
2017.03.15 11:00:05.530 4: TANK_DIESEL: GetUpdate called (update)
2017.03.15 11:00:05.532 4: TANK_DIESEL: update timer modified: will call GetUpdate in 600.0 seconds at 2017-03-15 11:10:05
2017.03.15 11:00:05.533 4: TANK_DIESEL: AddToQueue adds update, initial queue len: 0
2017.03.15 11:00:05.533 5: TANK_DIESEL: AddToQueue adds type update to URL https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, no data, header Content-Type: application/json
Accept: */*, retry 0
2017.03.15 11:00:05.533 5: TANK_DIESEL: HandleSendQueue called, qlen = 1
2017.03.15 11:00:05.535 4: TANK_DIESEL: HandleSendQueue sends request type update to URL https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX, No Data,
header: Content-Type: application/json
Accept: */*,
timeout 2
2017.03.15 11:00:05.535 4: HttpUtils url=https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
2017.03.15 11:00:05.757 5: HttpUtils request header:
GET /json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX HTTP/1.0
Host: creativecommons.tankerkoenig.de
User-Agent: fhem
Content-Type: application/json
Accept: */*
Content-Length: 0

2017.03.15 11:00:06.375 4: https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX: HTTP response code 200
2017.03.15 11:00:06.376 4: HttpUtils https://creativecommons.tankerkoenig.de/json/list.php?lat=47.78589&lng=11.05639&rad=20&sort=price&type=diesel&apikey=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX: Got data, length: 6166
2017.03.15 11:00:06.376 5: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx/1.10.0 (Ubuntu)
Date: Wed, 15 Mar 2017 10:00:06 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept
Access-Control-Allow-Methods: GET
2017.03.15 11:00:06.377 4: TANK_DIESEL: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Server: nginx/1.10.0 (Ubuntu)
Date: Wed, 15 Mar 2017 10:00:06 GMT
Content-Type: application/json; charset=utf-8
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: origin, x-requested-with, content-type, accept
Access-Control-Allow-Methods: GET,
Body: {"status":"ok","ok":true,"license":"CC BY 4.0 -  https:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","stations":[{"name":"Supermarkt-Tankstelle am real,- Markt WEILHEIM KALTENMOSER STR. 28","lat":47.8429,"lng":11.1488,"brand":"Supermarkt-Tankstelle am real,- Markt","dist":9.4,"price":1.109,"id":"51d4b640-a095-1aa0-e100-80009459e03a","street":"KALTENMOSER STR. 28","houseNumber":null,"postCode":82362,"place":"WEILHEIM","isOpen":true},{"name":"Pinoil","lat":47.83567,"lng":11.1437473,"brand":"Pinoil","dist":8.6,"price":1.119,"id":"fb0290d2-2d9a-4f19-a26f-77796c76535a","street":"Alpenstra\u00dfe","houseNumber":"5","postCode":82362,"place":"Weilheim","isOpen":true},{"name":"JET WEILHEIM PUETRICHSTR. 22","lat":47.8421,"lng":11.1465,"brand":"JET","dist":9.2,"price":1.119,"id":"51d4b5f9-a095-1aa0-e100-80009459e03a","street":"PUETRICHSTR. 22","houseNumber":null,"postCode":82362,"place":"WEILHEIM","isOpen":true},{"name":"P\u00e4hl Unterhirschberg 4 a","lat":47.8971,"lng":11.18832,"brand":"Avanti","dist":15.8,"price":1.119,"id":"47a417dc-a6f9-4890-b8e6-34672ab32f13","street":"Unterhirschberg","houseNumber":"4 a","postCode":82396,"place":"P\u00e4hl","isOpen":true},{"name":"Tankstelle Mp-21","lat":47.665634155273,"lng":11.200600624084,"brand":"","dist":17.2,"price":1.119,"id":"00060247-0001-4444-8888-acdcffffffff","street":"Olympiastra\u00dfe","houseNumber":"1","postCode":82418,"place":"Murnau","isOpen":true},{"name":"bft-Tankstelle Vogl","lat":47.793619,"lng":11.063541,"brand":"bft-Tankstelle Vogl","dist":1,"price":1.124,"id":"ef32dd0b-25e4-4396-8d70-5da0f95ba05f","street":"Schongauer Str. ","houseNumber":"17","postCode":82380,"place":"Peissenberg","isOpen":true},{"name":"PEISSENBERG - SCHONGAUER STR.","lat":47.793153136275,"lng":11.062878823082,"brand":"Agip","dist":0.9,"price":1.129,"id":"27db1860-c0c0-475e-a5ae-b929e4a64a58","street":"Schongauer Str.","houseNumber":"22","postCode":82380,"place":"Peissenberg","isOpen":true},{"name":"Esso Tankstelle","lat":47.802602,"lng":11.077094,"brand":"ESSO","dist":2.4,"price":1.129,"id":"fa1550e0-7e5a-46d6-aa56-035b22e24c46","street":"HAUPTSTR. 22","houseNumber":" ","postCode":82380,"place":"PEISSENBERG","isOpen":true},{"name":"Esso Tankstelle","lat":47.832063,"lng":11.146121,"brand":"ESSO","dist":8.4,"price":1.129,"id":"86324f67-0c8d-4d40-9a8f-a83f1205aef5","street":"ALPENSTR. 13","houseNumber":" ","postCode":82362,"place":"WEILHEIM","isOpen":true},{"name":"WEILHEIM - P\u00dcTRICHSTRASSE 29","lat":47.84385,"lng":11.14761,"brand":"Agip","dist":9.4,"price":1.129,"id":"28008ffd-4ab5-45a0-9816-655f78b357cc","street":"P\u00fctrichstrasse","houseNumber":"29","postCode":82362,"place":"Weilheim","isOpen":true},{"name":"V-Markt Schongau","lat":47.816647,"lng":10.903036,"brand":"V-Markt Schongau","dist":12,"price":1.129,"id":"3ea2eb9e-d5cd-48b6-9719-bf6bc23f920e","street":"Wiesenweg ","houseNumber":"15","postCode":86956,"place":"Schongau","isOpen":true},{"name":"Esso Tankstelle","lat":47.68305,"lng":11.203945,"brand":"ESSO","dist":15.9,"price":1.129,"id":"27830077-5238-45e4-a453-24b11a8fdb5e","street":"WEILHEIMER STR. 12","houseNumber":" ","postCode":82418,"place":"MURNAU","isOpen":true},{"name":"Murnau Garmischer Strasse 5","lat":47.67205,"lng":11.20129,"brand":"OMV","dist":16.7,"price":1.129,"id":"13109c2c-280b-4865-9d87-50bdb2b2a83f","street":"Garmischer Str.","houseNumber":"5","postCode":82418,"place":"Murnau","isOpen":true},{"name":"V-Markt Peiting","lat":47.788022,"lng":10.927195,"brand":"V-Markt Peiting","dist":9.7,"price":1.139,"id":"26aa0cf8-e354-41fc-b685-9634fcf069bf","street":"Ammergauerstr.","houseNumber":"60","postCode":86971,"place":"Peiting","isOpen":true},{"name":"JET SEESHAUPT WEILHEIMER STR. 17","lat":47.8263,"lng":11.2975,"brand":"JET","dist":18.6,"price":1.139,"id":"51d4b484-a095-1aa0-e100-80009459e03a","street":"WEILHEIMER STR. 17","houseNumber":null,"postCode":82402,"place":"SEESHAUPT","isOpen":true},{"name":"CU24h Tankstelle GbR","lat":47.7695,"lng":11.155,"brand":"Freie Tankstelle","dist":7.6,"price":1.147,"id":"2fed8d8c-dbeb-4a25-b561-7fc0c5e70a0a","street":"Hauptstr. ","houseNumber":"58","postCode":82386,"place":"Huglfing","isOpen":true},{"name":"BayWa Tankstelle  Peiting ","lat":47.789597,"lng":10.9421625,"brand":"BayWa","dist":8.5,"price":1.149,"id":"906e4c49-6b9a-4a61-afe5-d6b7c581efb2","street":"Sch\u00f6nriedelstr.","houseNumber":"11","postCode":86971,"place":"Peiting","isOpen":true},{"name":"Aral Tankstelle","lat":47.7986679,"lng":10.9212027,"brand":"ARAL","dist":10.2,"price":1.149,"id":"c483b0fc-7668-4135-bd88-5ddd9893716e","street":"Schongauer Stra\u00dfe","houseNumber":"19","postCode":86971,"place":"Peiting","isOpen":true},{"name":"Esso Tankstelle","lat":47.812611,"lng":10.901358,"brand":"ESSO","dist":12,"price":1.149,"id":"0223354e-a2af-4dbc-94ea-244b9bd2a2f1","street":"BAHNHOFSTR. 18","houseNumber":" ","postCode":86956,"place":"SCHONGAU","isOpen":true},{"name":"Schongau Tannenberger Stra\u00dfe 2","lat":47.807,"lng":10.87044,"brand":"OMV","dist":14.1,"price":1.149,"id":"96f33206-b762-499c-ac26-a24ca4d799df","street":"Tannenberger Str.","houseNumber":"2","postCode":86956,"place":"Schongau","isOpen":true},{"name":"V-Markt Saulgrub","lat":47.6674,"lng":11.02537,"brand":"V-Markt Saulgrub","dist":13.4,"price":1.159,"id":"e503b63e-8e1d-43a8-995b-1e4aadb27029","street":"Am M\u00fchlbach","houseNumber":"1","postCode":82442,"place":"Saulgrub","isOpen":true},{"name":"Aral Tankstelle","lat":47.8816261,"lng":10.8914948,"brand":"ARAL","dist":16.3,"price":1.169,"id":"f8a5705a-1640-4fe3-b2a7-90b7da06143d","street":"Bahnhofstra\u00dfe","houseNumber":"8a","postCode":86981,"place":"Kinsau","isOpen":true},{"name":"AVIA Automatenstation","lat":47.70405,"lng":10.862682,"brand":"AVIA Xpress","dist":17.1,"price":1.169,"id":"ebe9460e-1d82-427c-a50d-816853f21fa3","street":"Ammergauer Stra\u00dfe","houseNumber":"1","postCode":86989,"place":"Steingaden","isOpen":true},{"name":"Aral Tankstelle","lat":47.9579659,"lng":11.1021957,"brand":"ARAL","dist":19.4,"price":1.169,"id":"41ffbaba-e407-4afd-917b-3cebaa930264","street":"Lachener Stra\u00dfe","houseNumber":"56","postCode":86911,"place":"Die\u00dfen","isOpen":true}]}no error
2017.03.15 11:00:06.380 5: TANK_DIESEL: JSON Flatter called : prefix , ref is HASH(0x4a7f358)
2017.03.15 11:00:06.381 5: TANK_DIESEL: JSON Flatter in hash while, key = data, value = MTS-K
2017.03.15 11:00:06.381 5: TANK_DIESEL: JSON Flatter sets data to MTS-K
2017.03.15 11:00:06.381 5: TANK_DIESEL: JSON Flatter in hash while, key = license, value = CC BY 4.0 -  https://creativecommons.tankerkoenig.de
2017.03.15 11:00:06.382 5: TANK_DIESEL: JSON Flatter sets license to CC BY 4.0 -  https://creativecommons.tankerkoenig.de
2017.03.15 11:00:06.382 5: TANK_DIESEL: JSON Flatter in hash while, key = stations, value = ARRAY(0x48a77b0)
2017.03.15 11:00:06.382 5: TANK_DIESEL: JSON Flatter doing recursion because value is a ARRAY
2017.03.15 11:00:06.382 5: TANK_DIESEL: JSON Flatter called : prefix stations_, ref is ARRAY(0x48a77b0)
2017.03.15 11:00:06.383 5: TANK_DIESEL: JSON Flatter in array while, key = 0, value = HASH(0x346b8d0)
2017.03.15 11:00:06.383 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.383 5: TANK_DIESEL: JSON Flatter called : prefix stations_01_, ref is HASH(0x346b8d0)
2017.03.15 11:00:06.384 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.384 5: TANK_DIESEL: JSON Flatter sets stations_01_isOpen to 1
2017.03.15 11:00:06.384 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = WEILHEIM
2017.03.15 11:00:06.384 5: TANK_DIESEL: JSON Flatter sets stations_01_place to WEILHEIM
2017.03.15 11:00:06.385 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1592.
2017.03.15 11:00:06.385 1: stacktrace:
2017.03.15 11:00:06.386 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1592)
2017.03.15 11:00:06.386 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1581)
2017.03.15 11:00:06.386 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1595)
2017.03.15 11:00:06.386 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1618)
2017.03.15 11:00:06.387 1:     main::HTTPMOD_FlattenJSON           called by ./FHEM/98_HTTPMOD.pm (2109)
2017.03.15 11:00:06.387 1:     main::HTTPMOD_InitParsers           called by ./FHEM/98_HTTPMOD.pm (2356)
2017.03.15 11:00:06.387 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (428)
2017.03.15 11:00:06.387 1:     main::__ANON__                      called by fhem.pl (672)
2017.03.15 11:00:06.388 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value =
2017.03.15 11:00:06.388 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 9.4
2017.03.15 11:00:06.388 5: TANK_DIESEL: JSON Flatter sets stations_01_dist to 9.4
2017.03.15 11:00:06.388 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Supermarkt-Tankstelle am real,- Markt WEILHEIM KALTENMOSER STR. 28
2017.03.15 11:00:06.389 5: TANK_DIESEL: JSON Flatter sets stations_01_name to Supermarkt-Tankstelle am real,- Markt WEILHEIM KALTENMOSER STR. 28
2017.03.15 11:00:06.389 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 51d4b640-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.389 5: TANK_DIESEL: JSON Flatter sets stations_01_id to 51d4b640-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.389 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.8429
2017.03.15 11:00:06.389 5: TANK_DIESEL: JSON Flatter sets stations_01_lat to 47.8429
2017.03.15 11:00:06.390 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = KALTENMOSER STR. 28
2017.03.15 11:00:06.390 5: TANK_DIESEL: JSON Flatter sets stations_01_street to KALTENMOSER STR. 28
2017.03.15 11:00:06.390 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82362
2017.03.15 11:00:06.390 5: TANK_DIESEL: JSON Flatter sets stations_01_postCode to 82362
2017.03.15 11:00:06.391 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Supermarkt-Tankstelle am real,- Markt
2017.03.15 11:00:06.391 5: TANK_DIESEL: JSON Flatter sets stations_01_brand to Supermarkt-Tankstelle am real,- Markt
2017.03.15 11:00:06.391 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.109
2017.03.15 11:00:06.391 5: TANK_DIESEL: JSON Flatter sets stations_01_price to 1.109
2017.03.15 11:00:06.391 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.1488
2017.03.15 11:00:06.392 5: TANK_DIESEL: JSON Flatter sets stations_01_lng to 11.1488
2017.03.15 11:00:06.392 5: TANK_DIESEL: JSON Flatter in array while, key = 1, value = HASH(0x482bfe0)
2017.03.15 11:00:06.392 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.392 5: TANK_DIESEL: JSON Flatter called : prefix stations_02_, ref is HASH(0x482bfe0)
2017.03.15 11:00:06.393 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = fb0290d2-2d9a-4f19-a26f-77796c76535a
2017.03.15 11:00:06.393 5: TANK_DIESEL: JSON Flatter sets stations_02_id to fb0290d2-2d9a-4f19-a26f-77796c76535a
2017.03.15 11:00:06.393 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Pinoil
2017.03.15 11:00:06.393 5: TANK_DIESEL: JSON Flatter sets stations_02_name to Pinoil
2017.03.15 11:00:06.394 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 8.6
2017.03.15 11:00:06.394 5: TANK_DIESEL: JSON Flatter sets stations_02_dist to 8.6
2017.03.15 11:00:06.394 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 5
2017.03.15 11:00:06.394 5: TANK_DIESEL: JSON Flatter sets stations_02_houseNumber to 5
2017.03.15 11:00:06.394 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Weilheim
2017.03.15 11:00:06.395 5: TANK_DIESEL: JSON Flatter sets stations_02_place to Weilheim
2017.03.15 11:00:06.395 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.395 5: TANK_DIESEL: JSON Flatter sets stations_02_isOpen to 1
2017.03.15 11:00:06.395 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.119
2017.03.15 11:00:06.396 5: TANK_DIESEL: JSON Flatter sets stations_02_price to 1.119
2017.03.15 11:00:06.396 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.1437473
2017.03.15 11:00:06.396 5: TANK_DIESEL: JSON Flatter sets stations_02_lng to 11.1437473
2017.03.15 11:00:06.396 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Pinoil
2017.03.15 11:00:06.396 5: TANK_DIESEL: JSON Flatter sets stations_02_brand to Pinoil
2017.03.15 11:00:06.397 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82362
2017.03.15 11:00:06.397 5: TANK_DIESEL: JSON Flatter sets stations_02_postCode to 82362
2017.03.15 11:00:06.397 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Alpenstra�e
2017.03.15 11:00:06.397 5: TANK_DIESEL: JSON Flatter sets stations_02_street to Alpenstra�e
2017.03.15 11:00:06.398 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.83567
2017.03.15 11:00:06.398 5: TANK_DIESEL: JSON Flatter sets stations_02_lat to 47.83567
2017.03.15 11:00:06.398 5: TANK_DIESEL: JSON Flatter in array while, key = 2, value = HASH(0x4c85830)
2017.03.15 11:00:06.398 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.398 5: TANK_DIESEL: JSON Flatter called : prefix stations_03_, ref is HASH(0x4c85830)
2017.03.15 11:00:06.399 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.1465
2017.03.15 11:00:06.399 5: TANK_DIESEL: JSON Flatter sets stations_03_lng to 11.1465
2017.03.15 11:00:06.399 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.119
2017.03.15 11:00:06.399 5: TANK_DIESEL: JSON Flatter sets stations_03_price to 1.119
2017.03.15 11:00:06.400 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = JET
2017.03.15 11:00:06.400 5: TANK_DIESEL: JSON Flatter sets stations_03_brand to JET
2017.03.15 11:00:06.400 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82362
2017.03.15 11:00:06.400 5: TANK_DIESEL: JSON Flatter sets stations_03_postCode to 82362
2017.03.15 11:00:06.400 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.8421
2017.03.15 11:00:06.401 5: TANK_DIESEL: JSON Flatter sets stations_03_lat to 47.8421
2017.03.15 11:00:06.401 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = PUETRICHSTR. 22
2017.03.15 11:00:06.401 5: TANK_DIESEL: JSON Flatter sets stations_03_street to PUETRICHSTR. 22
2017.03.15 11:00:06.401 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 51d4b5f9-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.402 5: TANK_DIESEL: JSON Flatter sets stations_03_id to 51d4b5f9-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.402 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 9.2
2017.03.15 11:00:06.402 5: TANK_DIESEL: JSON Flatter sets stations_03_dist to 9.2
2017.03.15 11:00:06.402 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = JET WEILHEIM PUETRICHSTR. 22
2017.03.15 11:00:06.402 5: TANK_DIESEL: JSON Flatter sets stations_03_name to JET WEILHEIM PUETRICHSTR. 22
2017.03.15 11:00:06.403 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1592.
2017.03.15 11:00:06.403 1: stacktrace:
2017.03.15 11:00:06.403 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1592)
2017.03.15 11:00:06.404 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1581)
2017.03.15 11:00:06.404 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1595)
2017.03.15 11:00:06.404 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1618)
2017.03.15 11:00:06.404 1:     main::HTTPMOD_FlattenJSON           called by ./FHEM/98_HTTPMOD.pm (2109)
2017.03.15 11:00:06.405 1:     main::HTTPMOD_InitParsers           called by ./FHEM/98_HTTPMOD.pm (2356)
2017.03.15 11:00:06.405 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (428)
2017.03.15 11:00:06.405 1:     main::__ANON__                      called by fhem.pl (672)
2017.03.15 11:00:06.405 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value =
2017.03.15 11:00:06.406 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.406 5: TANK_DIESEL: JSON Flatter sets stations_03_isOpen to 1
2017.03.15 11:00:06.406 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = WEILHEIM
2017.03.15 11:00:06.406 5: TANK_DIESEL: JSON Flatter sets stations_03_place to WEILHEIM
2017.03.15 11:00:06.406 5: TANK_DIESEL: JSON Flatter in array while, key = 3, value = HASH(0x4b1ce90)
2017.03.15 11:00:06.407 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.407 5: TANK_DIESEL: JSON Flatter called : prefix stations_04_, ref is HASH(0x4b1ce90)
2017.03.15 11:00:06.407 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 47a417dc-a6f9-4890-b8e6-34672ab32f13
2017.03.15 11:00:06.407 5: TANK_DIESEL: JSON Flatter sets stations_04_id to 47a417dc-a6f9-4890-b8e6-34672ab32f13
2017.03.15 11:00:06.408 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 15.8
2017.03.15 11:00:06.408 5: TANK_DIESEL: JSON Flatter sets stations_04_dist to 15.8
2017.03.15 11:00:06.408 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = P�hl Unterhirschberg 4 a
2017.03.15 11:00:06.408 5: TANK_DIESEL: JSON Flatter sets stations_04_name to P�hl Unterhirschberg 4 a
2017.03.15 11:00:06.408 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 4 a
2017.03.15 11:00:06.409 5: TANK_DIESEL: JSON Flatter sets stations_04_houseNumber to 4 a
2017.03.15 11:00:06.409 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.409 5: TANK_DIESEL: JSON Flatter sets stations_04_isOpen to 1
2017.03.15 11:00:06.409 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = P�hl
2017.03.15 11:00:06.410 5: TANK_DIESEL: JSON Flatter sets stations_04_place to P�hl
2017.03.15 11:00:06.410 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.18832
2017.03.15 11:00:06.410 5: TANK_DIESEL: JSON Flatter sets stations_04_lng to 11.18832
2017.03.15 11:00:06.410 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.119
2017.03.15 11:00:06.411 5: TANK_DIESEL: JSON Flatter sets stations_04_price to 1.119
2017.03.15 11:00:06.411 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82396
2017.03.15 11:00:06.411 5: TANK_DIESEL: JSON Flatter sets stations_04_postCode to 82396
2017.03.15 11:00:06.411 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Avanti
2017.03.15 11:00:06.411 5: TANK_DIESEL: JSON Flatter sets stations_04_brand to Avanti
2017.03.15 11:00:06.412 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.8971
2017.03.15 11:00:06.412 5: TANK_DIESEL: JSON Flatter sets stations_04_lat to 47.8971
2017.03.15 11:00:06.412 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Unterhirschberg
2017.03.15 11:00:06.412 5: TANK_DIESEL: JSON Flatter sets stations_04_street to Unterhirschberg
2017.03.15 11:00:06.412 5: TANK_DIESEL: JSON Flatter in array while, key = 4, value = HASH(0x4b819b8)
2017.03.15 11:00:06.413 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.413 5: TANK_DIESEL: JSON Flatter called : prefix stations_05_, ref is HASH(0x4b819b8)
2017.03.15 11:00:06.413 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.665634155273
2017.03.15 11:00:06.413 5: TANK_DIESEL: JSON Flatter sets stations_05_lat to 47.665634155273
2017.03.15 11:00:06.414 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Olympiastra�e
2017.03.15 11:00:06.414 5: TANK_DIESEL: JSON Flatter sets stations_05_street to Olympiastra�e
2017.03.15 11:00:06.414 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82418
2017.03.15 11:00:06.414 5: TANK_DIESEL: JSON Flatter sets stations_05_postCode to 82418
2017.03.15 11:00:06.414 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value =
2017.03.15 11:00:06.415 5: TANK_DIESEL: JSON Flatter sets stations_05_brand to
2017.03.15 11:00:06.415 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.119
2017.03.15 11:00:06.415 5: TANK_DIESEL: JSON Flatter sets stations_05_price to 1.119
2017.03.15 11:00:06.415 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.200600624084
2017.03.15 11:00:06.416 5: TANK_DIESEL: JSON Flatter sets stations_05_lng to 11.200600624084
2017.03.15 11:00:06.416 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.416 5: TANK_DIESEL: JSON Flatter sets stations_05_isOpen to 1
2017.03.15 11:00:06.416 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Murnau
2017.03.15 11:00:06.416 5: TANK_DIESEL: JSON Flatter sets stations_05_place to Murnau
2017.03.15 11:00:06.417 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 1
2017.03.15 11:00:06.417 5: TANK_DIESEL: JSON Flatter sets stations_05_houseNumber to 1
2017.03.15 11:00:06.417 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 17.2
2017.03.15 11:00:06.417 5: TANK_DIESEL: JSON Flatter sets stations_05_dist to 17.2
2017.03.15 11:00:06.418 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Tankstelle Mp-21
2017.03.15 11:00:06.418 5: TANK_DIESEL: JSON Flatter sets stations_05_name to Tankstelle Mp-21
2017.03.15 11:00:06.418 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 00060247-0001-4444-8888-acdcffffffff
2017.03.15 11:00:06.418 5: TANK_DIESEL: JSON Flatter sets stations_05_id to 00060247-0001-4444-8888-acdcffffffff
2017.03.15 11:00:06.418 5: TANK_DIESEL: JSON Flatter in array while, key = 5, value = HASH(0x4b1d658)
2017.03.15 11:00:06.419 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.419 5: TANK_DIESEL: JSON Flatter called : prefix stations_06_, ref is HASH(0x4b1d658)
2017.03.15 11:00:06.419 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.063541
2017.03.15 11:00:06.419 5: TANK_DIESEL: JSON Flatter sets stations_06_lng to 11.063541
2017.03.15 11:00:06.420 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.124
2017.03.15 11:00:06.420 5: TANK_DIESEL: JSON Flatter sets stations_06_price to 1.124
2017.03.15 11:00:06.420 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.793619
2017.03.15 11:00:06.420 5: TANK_DIESEL: JSON Flatter sets stations_06_lat to 47.793619
2017.03.15 11:00:06.421 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Schongauer Str.
2017.03.15 11:00:06.421 5: TANK_DIESEL: JSON Flatter sets stations_06_street to Schongauer Str.
2017.03.15 11:00:06.421 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = bft-Tankstelle Vogl
2017.03.15 11:00:06.421 5: TANK_DIESEL: JSON Flatter sets stations_06_brand to bft-Tankstelle Vogl
2017.03.15 11:00:06.421 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82380
2017.03.15 11:00:06.422 5: TANK_DIESEL: JSON Flatter sets stations_06_postCode to 82380
2017.03.15 11:00:06.422 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 1
2017.03.15 11:00:06.422 5: TANK_DIESEL: JSON Flatter sets stations_06_dist to 1
2017.03.15 11:00:06.422 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = bft-Tankstelle Vogl
2017.03.15 11:00:06.422 5: TANK_DIESEL: JSON Flatter sets stations_06_name to bft-Tankstelle Vogl
2017.03.15 11:00:06.423 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = ef32dd0b-25e4-4396-8d70-5da0f95ba05f
2017.03.15 11:00:06.423 5: TANK_DIESEL: JSON Flatter sets stations_06_id to ef32dd0b-25e4-4396-8d70-5da0f95ba05f
2017.03.15 11:00:06.423 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.423 5: TANK_DIESEL: JSON Flatter sets stations_06_isOpen to 1
2017.03.15 11:00:06.424 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Peissenberg
2017.03.15 11:00:06.424 5: TANK_DIESEL: JSON Flatter sets stations_06_place to Peissenberg
2017.03.15 11:00:06.424 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 17
2017.03.15 11:00:06.424 5: TANK_DIESEL: JSON Flatter sets stations_06_houseNumber to 17
2017.03.15 11:00:06.425 5: TANK_DIESEL: JSON Flatter in array while, key = 6, value = HASH(0x48a50e8)
2017.03.15 11:00:06.425 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.425 5: TANK_DIESEL: JSON Flatter called : prefix stations_07_, ref is HASH(0x48a50e8)
2017.03.15 11:00:06.425 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.793153136275
2017.03.15 11:00:06.425 5: TANK_DIESEL: JSON Flatter sets stations_07_lat to 47.793153136275
2017.03.15 11:00:06.426 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Schongauer Str.
2017.03.15 11:00:06.426 5: TANK_DIESEL: JSON Flatter sets stations_07_street to Schongauer Str.
2017.03.15 11:00:06.426 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82380
2017.03.15 11:00:06.426 5: TANK_DIESEL: JSON Flatter sets stations_07_postCode to 82380
2017.03.15 11:00:06.426 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Agip
2017.03.15 11:00:06.427 5: TANK_DIESEL: JSON Flatter sets stations_07_brand to Agip
2017.03.15 11:00:06.427 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.062878823082
2017.03.15 11:00:06.427 5: TANK_DIESEL: JSON Flatter sets stations_07_lng to 11.062878823082
2017.03.15 11:00:06.427 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.428 5: TANK_DIESEL: JSON Flatter sets stations_07_price to 1.129
2017.03.15 11:00:06.428 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.428 5: TANK_DIESEL: JSON Flatter sets stations_07_isOpen to 1
2017.03.15 11:00:06.428 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Peissenberg
2017.03.15 11:00:06.428 5: TANK_DIESEL: JSON Flatter sets stations_07_place to Peissenberg
2017.03.15 11:00:06.429 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 22
2017.03.15 11:00:06.429 5: TANK_DIESEL: JSON Flatter sets stations_07_houseNumber to 22
2017.03.15 11:00:06.429 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 0.9
2017.03.15 11:00:06.429 5: TANK_DIESEL: JSON Flatter sets stations_07_dist to 0.9
2017.03.15 11:00:06.430 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = PEISSENBERG - SCHONGAUER STR.
2017.03.15 11:00:06.430 5: TANK_DIESEL: JSON Flatter sets stations_07_name to PEISSENBERG - SCHONGAUER STR.
2017.03.15 11:00:06.430 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 27db1860-c0c0-475e-a5ae-b929e4a64a58
2017.03.15 11:00:06.430 5: TANK_DIESEL: JSON Flatter sets stations_07_id to 27db1860-c0c0-475e-a5ae-b929e4a64a58
2017.03.15 11:00:06.430 5: TANK_DIESEL: JSON Flatter in array while, key = 7, value = HASH(0x4d25c60)
2017.03.15 11:00:06.431 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.431 5: TANK_DIESEL: JSON Flatter called : prefix stations_08_, ref is HASH(0x4d25c60)
2017.03.15 11:00:06.431 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = ESSO
2017.03.15 11:00:06.431 5: TANK_DIESEL: JSON Flatter sets stations_08_brand to ESSO
2017.03.15 11:00:06.432 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82380
2017.03.15 11:00:06.432 5: TANK_DIESEL: JSON Flatter sets stations_08_postCode to 82380
2017.03.15 11:00:06.432 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.802602
2017.03.15 11:00:06.432 5: TANK_DIESEL: JSON Flatter sets stations_08_lat to 47.802602
2017.03.15 11:00:06.432 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = HAUPTSTR. 22
2017.03.15 11:00:06.433 5: TANK_DIESEL: JSON Flatter sets stations_08_street to HAUPTSTR. 22
2017.03.15 11:00:06.433 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.077094
2017.03.15 11:00:06.433 5: TANK_DIESEL: JSON Flatter sets stations_08_lng to 11.077094
2017.03.15 11:00:06.433 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.434 5: TANK_DIESEL: JSON Flatter sets stations_08_price to 1.129
2017.03.15 11:00:06.434 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 
2017.03.15 11:00:06.434 5: TANK_DIESEL: JSON Flatter sets stations_08_houseNumber to 
2017.03.15 11:00:06.434 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.435 5: TANK_DIESEL: JSON Flatter sets stations_08_isOpen to 1
2017.03.15 11:00:06.435 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = PEISSENBERG
2017.03.15 11:00:06.435 5: TANK_DIESEL: JSON Flatter sets stations_08_place to PEISSENBERG
2017.03.15 11:00:06.435 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = fa1550e0-7e5a-46d6-aa56-035b22e24c46
2017.03.15 11:00:06.435 5: TANK_DIESEL: JSON Flatter sets stations_08_id to fa1550e0-7e5a-46d6-aa56-035b22e24c46
2017.03.15 11:00:06.436 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 2.4
2017.03.15 11:00:06.436 5: TANK_DIESEL: JSON Flatter sets stations_08_dist to 2.4
2017.03.15 11:00:06.436 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Esso Tankstelle
2017.03.15 11:00:06.436 5: TANK_DIESEL: JSON Flatter sets stations_08_name to Esso Tankstelle
2017.03.15 11:00:06.437 5: TANK_DIESEL: JSON Flatter in array while, key = 8, value = HASH(0x4d39c38)
2017.03.15 11:00:06.437 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.437 5: TANK_DIESEL: JSON Flatter called : prefix stations_09_, ref is HASH(0x4d39c38)
2017.03.15 11:00:06.437 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.437 5: TANK_DIESEL: JSON Flatter sets stations_09_price to 1.129
2017.03.15 11:00:06.438 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.146121
2017.03.15 11:00:06.438 5: TANK_DIESEL: JSON Flatter sets stations_09_lng to 11.146121
2017.03.15 11:00:06.438 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = ESSO
2017.03.15 11:00:06.438 5: TANK_DIESEL: JSON Flatter sets stations_09_brand to ESSO
2017.03.15 11:00:06.439 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82362
2017.03.15 11:00:06.439 5: TANK_DIESEL: JSON Flatter sets stations_09_postCode to 82362
2017.03.15 11:00:06.439 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = ALPENSTR. 13
2017.03.15 11:00:06.439 5: TANK_DIESEL: JSON Flatter sets stations_09_street to ALPENSTR. 13
2017.03.15 11:00:06.440 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.832063
2017.03.15 11:00:06.440 5: TANK_DIESEL: JSON Flatter sets stations_09_lat to 47.832063
2017.03.15 11:00:06.440 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 86324f67-0c8d-4d40-9a8f-a83f1205aef5
2017.03.15 11:00:06.440 5: TANK_DIESEL: JSON Flatter sets stations_09_id to 86324f67-0c8d-4d40-9a8f-a83f1205aef5
2017.03.15 11:00:06.440 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Esso Tankstelle
2017.03.15 11:00:06.441 5: TANK_DIESEL: JSON Flatter sets stations_09_name to Esso Tankstelle
2017.03.15 11:00:06.441 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 8.4
2017.03.15 11:00:06.441 5: TANK_DIESEL: JSON Flatter sets stations_09_dist to 8.4
2017.03.15 11:00:06.441 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 
2017.03.15 11:00:06.441 5: TANK_DIESEL: JSON Flatter sets stations_09_houseNumber to 
2017.03.15 11:00:06.442 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = WEILHEIM
2017.03.15 11:00:06.442 5: TANK_DIESEL: JSON Flatter sets stations_09_place to WEILHEIM
2017.03.15 11:00:06.442 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.442 5: TANK_DIESEL: JSON Flatter sets stations_09_isOpen to 1
2017.03.15 11:00:06.443 5: TANK_DIESEL: JSON Flatter in array while, key = 9, value = HASH(0x5bd66b8)
2017.03.15 11:00:06.443 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.443 5: TANK_DIESEL: JSON Flatter called : prefix stations_10_, ref is HASH(0x5bd66b8)
2017.03.15 11:00:06.443 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.84385
2017.03.15 11:00:06.443 5: TANK_DIESEL: JSON Flatter sets stations_10_lat to 47.84385
2017.03.15 11:00:06.444 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = P�trichstrasse
2017.03.15 11:00:06.444 5: TANK_DIESEL: JSON Flatter sets stations_10_street to P�trichstrasse
2017.03.15 11:00:06.444 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Agip
2017.03.15 11:00:06.444 5: TANK_DIESEL: JSON Flatter sets stations_10_brand to Agip
2017.03.15 11:00:06.445 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82362
2017.03.15 11:00:06.445 5: TANK_DIESEL: JSON Flatter sets stations_10_postCode to 82362
2017.03.15 11:00:06.445 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.14761
2017.03.15 11:00:06.445 5: TANK_DIESEL: JSON Flatter sets stations_10_lng to 11.14761
2017.03.15 11:00:06.445 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.446 5: TANK_DIESEL: JSON Flatter sets stations_10_price to 1.129
2017.03.15 11:00:06.446 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.446 5: TANK_DIESEL: JSON Flatter sets stations_10_isOpen to 1
2017.03.15 11:00:06.446 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Weilheim
2017.03.15 11:00:06.447 5: TANK_DIESEL: JSON Flatter sets stations_10_place to Weilheim
2017.03.15 11:00:06.447 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 29
2017.03.15 11:00:06.447 5: TANK_DIESEL: JSON Flatter sets stations_10_houseNumber to 29
2017.03.15 11:00:06.447 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 9.4
2017.03.15 11:00:06.447 5: TANK_DIESEL: JSON Flatter sets stations_10_dist to 9.4
2017.03.15 11:00:06.448 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = WEILHEIM - P�TRICHSTRASSE 29
2017.03.15 11:00:06.448 5: TANK_DIESEL: JSON Flatter sets stations_10_name to WEILHEIM - P�TRICHSTRASSE 29
2017.03.15 11:00:06.448 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 28008ffd-4ab5-45a0-9816-655f78b357cc
2017.03.15 11:00:06.448 5: TANK_DIESEL: JSON Flatter sets stations_10_id to 28008ffd-4ab5-45a0-9816-655f78b357cc
2017.03.15 11:00:06.449 5: TANK_DIESEL: JSON Flatter in array while, key = 10, value = HASH(0x487af58)
2017.03.15 11:00:06.449 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.449 5: TANK_DIESEL: JSON Flatter called : prefix stations_11_, ref is HASH(0x487af58)
2017.03.15 11:00:06.449 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Wiesenweg
2017.03.15 11:00:06.449 5: TANK_DIESEL: JSON Flatter sets stations_11_street to Wiesenweg
2017.03.15 11:00:06.450 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.816647
2017.03.15 11:00:06.450 5: TANK_DIESEL: JSON Flatter sets stations_11_lat to 47.816647
2017.03.15 11:00:06.450 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = V-Markt Schongau
2017.03.15 11:00:06.450 5: TANK_DIESEL: JSON Flatter sets stations_11_brand to V-Markt Schongau
2017.03.15 11:00:06.451 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 86956
2017.03.15 11:00:06.451 5: TANK_DIESEL: JSON Flatter sets stations_11_postCode to 86956
2017.03.15 11:00:06.451 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.451 5: TANK_DIESEL: JSON Flatter sets stations_11_price to 1.129
2017.03.15 11:00:06.451 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 10.903036
2017.03.15 11:00:06.452 5: TANK_DIESEL: JSON Flatter sets stations_11_lng to 10.903036
2017.03.15 11:00:06.452 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Schongau
2017.03.15 11:00:06.452 5: TANK_DIESEL: JSON Flatter sets stations_11_place to Schongau
2017.03.15 11:00:06.452 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.452 5: TANK_DIESEL: JSON Flatter sets stations_11_isOpen to 1
2017.03.15 11:00:06.453 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 15
2017.03.15 11:00:06.453 5: TANK_DIESEL: JSON Flatter sets stations_11_houseNumber to 15
2017.03.15 11:00:06.453 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = V-Markt Schongau
2017.03.15 11:00:06.454 5: TANK_DIESEL: JSON Flatter sets stations_11_name to V-Markt Schongau
2017.03.15 11:00:06.454 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 12
2017.03.15 11:00:06.454 5: TANK_DIESEL: JSON Flatter sets stations_11_dist to 12
2017.03.15 11:00:06.454 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 3ea2eb9e-d5cd-48b6-9719-bf6bc23f920e
2017.03.15 11:00:06.454 5: TANK_DIESEL: JSON Flatter sets stations_11_id to 3ea2eb9e-d5cd-48b6-9719-bf6bc23f920e
2017.03.15 11:00:06.455 5: TANK_DIESEL: JSON Flatter in array while, key = 11, value = HASH(0x582ae68)
2017.03.15 11:00:06.455 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.455 5: TANK_DIESEL: JSON Flatter called : prefix stations_12_, ref is HASH(0x582ae68)
2017.03.15 11:00:06.455 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 
2017.03.15 11:00:06.455 5: TANK_DIESEL: JSON Flatter sets stations_12_houseNumber to 
2017.03.15 11:00:06.456 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = MURNAU
2017.03.15 11:00:06.456 5: TANK_DIESEL: JSON Flatter sets stations_12_place to MURNAU
2017.03.15 11:00:06.456 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.456 5: TANK_DIESEL: JSON Flatter sets stations_12_isOpen to 1
2017.03.15 11:00:06.457 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 27830077-5238-45e4-a453-24b11a8fdb5e
2017.03.15 11:00:06.457 5: TANK_DIESEL: JSON Flatter sets stations_12_id to 27830077-5238-45e4-a453-24b11a8fdb5e
2017.03.15 11:00:06.457 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Esso Tankstelle
2017.03.15 11:00:06.457 5: TANK_DIESEL: JSON Flatter sets stations_12_name to Esso Tankstelle
2017.03.15 11:00:06.457 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 15.9
2017.03.15 11:00:06.458 5: TANK_DIESEL: JSON Flatter sets stations_12_dist to 15.9
2017.03.15 11:00:06.458 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82418
2017.03.15 11:00:06.458 5: TANK_DIESEL: JSON Flatter sets stations_12_postCode to 82418
2017.03.15 11:00:06.458 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = ESSO
2017.03.15 11:00:06.459 5: TANK_DIESEL: JSON Flatter sets stations_12_brand to ESSO
2017.03.15 11:00:06.459 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = WEILHEIMER STR. 12
2017.03.15 11:00:06.459 5: TANK_DIESEL: JSON Flatter sets stations_12_street to WEILHEIMER STR. 12
2017.03.15 11:00:06.459 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.68305
2017.03.15 11:00:06.459 5: TANK_DIESEL: JSON Flatter sets stations_12_lat to 47.68305
2017.03.15 11:00:06.460 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.203945
2017.03.15 11:00:06.460 5: TANK_DIESEL: JSON Flatter sets stations_12_lng to 11.203945
2017.03.15 11:00:06.460 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.460 5: TANK_DIESEL: JSON Flatter sets stations_12_price to 1.129
2017.03.15 11:00:06.461 5: TANK_DIESEL: JSON Flatter in array while, key = 12, value = HASH(0x4841198)
2017.03.15 11:00:06.461 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.461 5: TANK_DIESEL: JSON Flatter called : prefix stations_13_, ref is HASH(0x4841198)
2017.03.15 11:00:06.461 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.20129
2017.03.15 11:00:06.461 5: TANK_DIESEL: JSON Flatter sets stations_13_lng to 11.20129
2017.03.15 11:00:06.462 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.129
2017.03.15 11:00:06.462 5: TANK_DIESEL: JSON Flatter sets stations_13_price to 1.129
2017.03.15 11:00:06.462 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = OMV
2017.03.15 11:00:06.462 5: TANK_DIESEL: JSON Flatter sets stations_13_brand to OMV
2017.03.15 11:00:06.463 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82418
2017.03.15 11:00:06.463 5: TANK_DIESEL: JSON Flatter sets stations_13_postCode to 82418
2017.03.15 11:00:06.463 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.67205
2017.03.15 11:00:06.463 5: TANK_DIESEL: JSON Flatter sets stations_13_lat to 47.67205
2017.03.15 11:00:06.463 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Garmischer Str.
2017.03.15 11:00:06.464 5: TANK_DIESEL: JSON Flatter sets stations_13_street to Garmischer Str.
2017.03.15 11:00:06.464 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 13109c2c-280b-4865-9d87-50bdb2b2a83f
2017.03.15 11:00:06.464 5: TANK_DIESEL: JSON Flatter sets stations_13_id to 13109c2c-280b-4865-9d87-50bdb2b2a83f
2017.03.15 11:00:06.464 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 16.7
2017.03.15 11:00:06.465 5: TANK_DIESEL: JSON Flatter sets stations_13_dist to 16.7
2017.03.15 11:00:06.465 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = Murnau Garmischer Strasse 5
2017.03.15 11:00:06.465 5: TANK_DIESEL: JSON Flatter sets stations_13_name to Murnau Garmischer Strasse 5
2017.03.15 11:00:06.465 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 5
2017.03.15 11:00:06.465 5: TANK_DIESEL: JSON Flatter sets stations_13_houseNumber to 5
2017.03.15 11:00:06.466 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.466 5: TANK_DIESEL: JSON Flatter sets stations_13_isOpen to 1
2017.03.15 11:00:06.466 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Murnau
2017.03.15 11:00:06.466 5: TANK_DIESEL: JSON Flatter sets stations_13_place to Murnau
2017.03.15 11:00:06.467 5: TANK_DIESEL: JSON Flatter in array while, key = 13, value = HASH(0x4c664c8)
2017.03.15 11:00:06.467 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.467 5: TANK_DIESEL: JSON Flatter called : prefix stations_14_, ref is HASH(0x4c664c8)
2017.03.15 11:00:06.467 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 86971
2017.03.15 11:00:06.467 5: TANK_DIESEL: JSON Flatter sets stations_14_postCode to 86971
2017.03.15 11:00:06.468 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = V-Markt Peiting
2017.03.15 11:00:06.468 5: TANK_DIESEL: JSON Flatter sets stations_14_brand to V-Markt Peiting
2017.03.15 11:00:06.468 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Ammergauerstr.
2017.03.15 11:00:06.468 5: TANK_DIESEL: JSON Flatter sets stations_14_street to Ammergauerstr.
2017.03.15 11:00:06.468 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.788022
2017.03.15 11:00:06.469 5: TANK_DIESEL: JSON Flatter sets stations_14_lat to 47.788022
2017.03.15 11:00:06.469 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 10.927195
2017.03.15 11:00:06.469 5: TANK_DIESEL: JSON Flatter sets stations_14_lng to 10.927195
2017.03.15 11:00:06.469 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.139
2017.03.15 11:00:06.470 5: TANK_DIESEL: JSON Flatter sets stations_14_price to 1.139
2017.03.15 11:00:06.470 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 60
2017.03.15 11:00:06.470 5: TANK_DIESEL: JSON Flatter sets stations_14_houseNumber to 60
2017.03.15 11:00:06.470 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Peiting
2017.03.15 11:00:06.470 5: TANK_DIESEL: JSON Flatter sets stations_14_place to Peiting
2017.03.15 11:00:06.471 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.471 5: TANK_DIESEL: JSON Flatter sets stations_14_isOpen to 1
2017.03.15 11:00:06.471 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 26aa0cf8-e354-41fc-b685-9634fcf069bf
2017.03.15 11:00:06.471 5: TANK_DIESEL: JSON Flatter sets stations_14_id to 26aa0cf8-e354-41fc-b685-9634fcf069bf
2017.03.15 11:00:06.472 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = V-Markt Peiting
2017.03.15 11:00:06.472 5: TANK_DIESEL: JSON Flatter sets stations_14_name to V-Markt Peiting
2017.03.15 11:00:06.472 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 9.7
2017.03.15 11:00:06.472 5: TANK_DIESEL: JSON Flatter sets stations_14_dist to 9.7
2017.03.15 11:00:06.472 5: TANK_DIESEL: JSON Flatter in array while, key = 14, value = HASH(0x5c239e0)
2017.03.15 11:00:06.473 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.473 5: TANK_DIESEL: JSON Flatter called : prefix stations_15_, ref is HASH(0x5c239e0)
2017.03.15 11:00:06.473 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.473 5: TANK_DIESEL: JSON Flatter sets stations_15_isOpen to 1
2017.03.15 11:00:06.474 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = SEESHAUPT
2017.03.15 11:00:06.474 5: TANK_DIESEL: JSON Flatter sets stations_15_place to SEESHAUPT
2017.03.15 11:00:06.474 1: PERL WARNING: Use of uninitialized value $value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 1592.
2017.03.15 11:00:06.474 1: stacktrace:
2017.03.15 11:00:06.475 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (1592)
2017.03.15 11:00:06.475 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1581)
2017.03.15 11:00:06.475 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1595)
2017.03.15 11:00:06.475 1:     main::HTTPMOD_JsonFlatter           called by ./FHEM/98_HTTPMOD.pm (1618)
2017.03.15 11:00:06.476 1:     main::HTTPMOD_FlattenJSON           called by ./FHEM/98_HTTPMOD.pm (2109)
2017.03.15 11:00:06.476 1:     main::HTTPMOD_InitParsers           called by ./FHEM/98_HTTPMOD.pm (2356)
2017.03.15 11:00:06.476 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (428)
2017.03.15 11:00:06.476 1:     main::__ANON__                      called by fhem.pl (672)
2017.03.15 11:00:06.477 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value =
2017.03.15 11:00:06.477 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 18.6
2017.03.15 11:00:06.477 5: TANK_DIESEL: JSON Flatter sets stations_15_dist to 18.6
2017.03.15 11:00:06.477 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = JET SEESHAUPT WEILHEIMER STR. 17
2017.03.15 11:00:06.478 5: TANK_DIESEL: JSON Flatter sets stations_15_name to JET SEESHAUPT WEILHEIMER STR. 17
2017.03.15 11:00:06.478 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 51d4b484-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.478 5: TANK_DIESEL: JSON Flatter sets stations_15_id to 51d4b484-a095-1aa0-e100-80009459e03a
2017.03.15 11:00:06.478 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.8263
2017.03.15 11:00:06.478 5: TANK_DIESEL: JSON Flatter sets stations_15_lat to 47.8263
2017.03.15 11:00:06.479 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = WEILHEIMER STR. 17
2017.03.15 11:00:06.479 5: TANK_DIESEL: JSON Flatter sets stations_15_street to WEILHEIMER STR. 17
2017.03.15 11:00:06.479 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = JET
2017.03.15 11:00:06.479 5: TANK_DIESEL: JSON Flatter sets stations_15_brand to JET
2017.03.15 11:00:06.479 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82402
2017.03.15 11:00:06.480 5: TANK_DIESEL: JSON Flatter sets stations_15_postCode to 82402
2017.03.15 11:00:06.480 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.2975
2017.03.15 11:00:06.480 5: TANK_DIESEL: JSON Flatter sets stations_15_lng to 11.2975
2017.03.15 11:00:06.480 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.139
2017.03.15 11:00:06.481 5: TANK_DIESEL: JSON Flatter sets stations_15_price to 1.139
2017.03.15 11:00:06.481 5: TANK_DIESEL: JSON Flatter in array while, key = 15, value = HASH(0x4bbda50)
2017.03.15 11:00:06.481 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.481 5: TANK_DIESEL: JSON Flatter called : prefix stations_16_, ref is HASH(0x4bbda50)
2017.03.15 11:00:06.481 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 2fed8d8c-dbeb-4a25-b561-7fc0c5e70a0a
2017.03.15 11:00:06.482 5: TANK_DIESEL: JSON Flatter sets stations_16_id to 2fed8d8c-dbeb-4a25-b561-7fc0c5e70a0a
2017.03.15 11:00:06.482 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = CU24h Tankstelle GbR
2017.03.15 11:00:06.482 5: TANK_DIESEL: JSON Flatter sets stations_16_name to CU24h Tankstelle GbR
2017.03.15 11:00:06.482 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 7.6
2017.03.15 11:00:06.482 5: TANK_DIESEL: JSON Flatter sets stations_16_dist to 7.6
2017.03.15 11:00:06.483 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 58
2017.03.15 11:00:06.483 5: TANK_DIESEL: JSON Flatter sets stations_16_houseNumber to 58
2017.03.15 11:00:06.483 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Huglfing
2017.03.15 11:00:06.483 5: TANK_DIESEL: JSON Flatter sets stations_16_place to Huglfing
2017.03.15 11:00:06.484 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.484 5: TANK_DIESEL: JSON Flatter sets stations_16_isOpen to 1
2017.03.15 11:00:06.484 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.147
2017.03.15 11:00:06.484 5: TANK_DIESEL: JSON Flatter sets stations_16_price to 1.147
2017.03.15 11:00:06.484 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 11.155
2017.03.15 11:00:06.485 5: TANK_DIESEL: JSON Flatter sets stations_16_lng to 11.155
2017.03.15 11:00:06.485 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 82386
2017.03.15 11:00:06.485 5: TANK_DIESEL: JSON Flatter sets stations_16_postCode to 82386
2017.03.15 11:00:06.485 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = Freie Tankstelle
2017.03.15 11:00:06.486 5: TANK_DIESEL: JSON Flatter sets stations_16_brand to Freie Tankstelle
2017.03.15 11:00:06.486 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Hauptstr.
2017.03.15 11:00:06.486 5: TANK_DIESEL: JSON Flatter sets stations_16_street to Hauptstr.
2017.03.15 11:00:06.486 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.7695
2017.03.15 11:00:06.486 5: TANK_DIESEL: JSON Flatter sets stations_16_lat to 47.7695
2017.03.15 11:00:06.487 5: TANK_DIESEL: JSON Flatter in array while, key = 16, value = HASH(0x4d21b70)
2017.03.15 11:00:06.487 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.487 5: TANK_DIESEL: JSON Flatter called : prefix stations_17_, ref is HASH(0x4d21b70)
2017.03.15 11:00:06.487 5: TANK_DIESEL: JSON Flatter in hash while, key = dist, value = 8.5
2017.03.15 11:00:06.488 5: TANK_DIESEL: JSON Flatter sets stations_17_dist to 8.5
2017.03.15 11:00:06.488 5: TANK_DIESEL: JSON Flatter in hash while, key = name, value = BayWa Tankstelle  Peiting
2017.03.15 11:00:06.488 5: TANK_DIESEL: JSON Flatter sets stations_17_name to BayWa Tankstelle  Peiting
2017.03.15 11:00:06.488 5: TANK_DIESEL: JSON Flatter in hash while, key = id, value = 906e4c49-6b9a-4a61-afe5-d6b7c581efb2
2017.03.15 11:00:06.488 5: TANK_DIESEL: JSON Flatter sets stations_17_id to 906e4c49-6b9a-4a61-afe5-d6b7c581efb2
2017.03.15 11:00:06.489 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.489 5: TANK_DIESEL: JSON Flatter sets stations_17_isOpen to 1
2017.03.15 11:00:06.489 5: TANK_DIESEL: JSON Flatter in hash while, key = place, value = Peiting
2017.03.15 11:00:06.489 5: TANK_DIESEL: JSON Flatter sets stations_17_place to Peiting
2017.03.15 11:00:06.489 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 11
2017.03.15 11:00:06.490 5: TANK_DIESEL: JSON Flatter sets stations_17_houseNumber to 11
2017.03.15 11:00:06.490 5: TANK_DIESEL: JSON Flatter in hash while, key = price, value = 1.149
2017.03.15 11:00:06.490 5: TANK_DIESEL: JSON Flatter sets stations_17_price to 1.149
2017.03.15 11:00:06.490 5: TANK_DIESEL: JSON Flatter in hash while, key = lng, value = 10.9421625
2017.03.15 11:00:06.491 5: TANK_DIESEL: JSON Flatter sets stations_17_lng to 10.9421625
2017.03.15 11:00:06.491 5: TANK_DIESEL: JSON Flatter in hash while, key = lat, value = 47.789597
2017.03.15 11:00:06.491 5: TANK_DIESEL: JSON Flatter sets stations_17_lat to 47.789597
2017.03.15 11:00:06.491 5: TANK_DIESEL: JSON Flatter in hash while, key = street, value = Sch�nriedelstr.
2017.03.15 11:00:06.491 5: TANK_DIESEL: JSON Flatter sets stations_17_street to Sch�nriedelstr.
2017.03.15 11:00:06.492 5: TANK_DIESEL: JSON Flatter in hash while, key = postCode, value = 86971
2017.03.15 11:00:06.492 5: TANK_DIESEL: JSON Flatter sets stations_17_postCode to 86971
2017.03.15 11:00:06.492 5: TANK_DIESEL: JSON Flatter in hash while, key = brand, value = BayWa
2017.03.15 11:00:06.492 5: TANK_DIESEL: JSON Flatter sets stations_17_brand to BayWa
2017.03.15 11:00:06.493 5: TANK_DIESEL: JSON Flatter in array while, key = 17, value = HASH(0x4b4f3b8)
2017.03.15 11:00:06.493 5: TANK_DIESEL: JSON Flatter doing recursion because value is a HASH
2017.03.15 11:00:06.493 5: TANK_DIESEL: JSON Flatter called : prefix stations_18_, ref is HASH(0x4b4f3b8)
2017.03.15 11:00:06.493 5: TANK_DIESEL: JSON Flatter in hash while, key = houseNumber, value = 19
2017.03.15 11:00:06.493 5: TANK_DIESEL: JSON Flatter sets stations_18_houseNumber to 19
2017.03.15 11:00:06.494 5: TANK_DIESEL: JSON Flatter in hash while, key = isOpen, value = 1
2017.03.15 11:00:06.494 5:
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 März 2017, 21:00:22
Hallo Ronny,

Du hast mir die URL, um die es Dir geht ja geschickt und ich habe mir die Seite angesehen.
Prinzipiell kann man das schon machen, aber in diesem Fall muss der Request nicht nur alle Formularfelder in der richtigen Form enthalten sondern auch noch einen Viewstate und Cookies. Das wird vermutlich recht aufwändig und vermutlich musst Du auch mit Replacements arbeiten.
Wenn Du es dennoch versuchen möchtest, solltest Du zunächst die Sequenz der Requests mit der Burp-Suite aufzeichnen. Der erste nötige Schritt ist die Analyse der Kommunikation der Website. Dann müsstest Du versuchen alle Parameter in HTTPMOD abzubilden.
Da hilft keine Kopiervorlage und kein Ausprobieren. Es muss schon genau so gesendet werden wie Du es mit einem Tool wie der Burp-Suite für diese spezielle Seite aufzeichnen kannst.
Mir fehlt leider die Zeit um die Kommunikation dieser Website für Dich zu analysieren.

Gruss und Sorry
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 März 2017, 21:06:59
Hall BillyPbg und mahowi,

das Problem war mir nicht bekannt.
Schuld ist eine Log-Zeile, die eigentlich inzwischen überflüssig ist.
Anbei eine neuere Version. Schaut doch mal ob das Problem damit behoben ist.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 16 März 2017, 22:21:23
Zitat von: StefanStrobel am 16 März 2017, 21:00:22
Hallo Ronny,

Du hast mir die URL, um die es Dir geht ja geschickt und ich habe mir die Seite angesehen.
Prinzipiell kann man das schon machen, aber in diesem Fall muss der Request nicht nur alle Formularfelder in der richtigen Form enthalten sondern auch noch einen Viewstate und Cookies. Das wird vermutlich recht aufwändig und vermutlich musst Du auch mit Replacements arbeiten.
Wenn Du es dennoch versuchen möchtest, solltest Du zunächst die Sequenz der Requests mit der Burp-Suite aufzeichnen. Der erste nötige Schritt ist die Analyse der Kommunikation der Website. Dann müsstest Du versuchen alle Parameter in HTTPMOD abzubilden.
Da hilft keine Kopiervorlage und kein Ausprobieren. Es muss schon genau so gesendet werden wie Du es mit einem Tool wie der Burp-Suite für diese spezielle Seite aufzeichnen kannst.
Mir fehlt leider die Zeit um die Kommunikation dieser Website für Dich zu analysieren.

Gruss und Sorry
    Stefan

Hi Stefan,

ich hatte gehofft, dass das Modul wie ein Browser agiert. So dass ich mich nur um "mein" Inputfeld kümmern muss.
Das ist ja zu schade. Wenn das für Dich schon so eine zeitintensive Sache ist, wage ich mich da wohl besser gar nicht erst ran.

Viele Grüße
Ronny
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mahowi am 17 März 2017, 01:34:24
Zitat von: StefanStrobel am 16 März 2017, 21:06:59
Hall BillyPbg und mahowi,

das Problem war mir nicht bekannt.
Schuld ist eine Log-Zeile, die eigentlich inzwischen überflüssig ist.
Anbei eine neuere Version. Schaut doch mal ob das Problem damit behoben ist.

Ja, die Fehlermeldungen sind damit weg.  :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BillyPbg am 17 März 2017, 12:45:04
Zitat von: StefanStrobel am 16 März 2017, 21:06:59
...
das Problem war mir nicht bekannt.
Schuld ist eine Log-Zeile, die eigentlich inzwischen überflüssig ist.
Anbei eine neuere Version. Schaut doch mal ob das Problem damit behoben ist.
...

Hallo Stefan,

auch bei mir sind damit die '1592'-er Warnungen erledigt. :)

Es dürfte Dich aber nicht wundern, wenn ich sage, dass mit der V3.3.5 wohl aufgrund der zwischenzeitlichen, allgemeinen Weiterentwicklung andere Warnungen bei mir entstehen (z.B. Müll-'Calender'), oder?
Ging daher wieder - bis zu Deinem nächsten, regulären Update - zurück auf die V3.3.8 (16.03.2017).

VG.
BillyPbg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 März 2017, 23:13:40
Hallo BillyPbg,

Jetzt hast Du mich etwas verwirrt. Mit welcher Version hast Du weitere Warnings?
Mit der neuesten (3.3.8) oder mit einer älteren?
Wenn es keine neuen Probleme gibt, würde ich die 3.3.8 demnächst einchecken.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 20 März 2017, 00:17:02
Zitat von: StefanStrobel am 16 März 2017, 21:00:22
Der erste nötige Schritt ist die Analyse der Kommunikation der Website. Dann müsstest Du versuchen alle Parameter in HTTPMOD abzubilden.
Da hilft keine Kopiervorlage und kein Ausprobieren. Es muss schon genau so gesendet werden wie Du es mit einem Tool wie der Burp-Suite für diese spezielle Seite aufzeichnen kannst.

Hi Stefan,

so langsam verstehe ich die ganze Sache.. spannend! Ich habe es soweit hinbekommen, dass mir die gewünschten Inhalte angezeigt werden. Allerdings nur für einen Tag. Das liegt daran, dass in dem base64-encodierten Input neben tausend Dingen auch die erforderlichen Datum Inputwerte stecken.

Ich muss also nun zunächst die Seite ansurfen. Dann die Inputs auslesen. Daraus den Request neu zusammenbauen. Und anschließend noch einen Post Request absetzen.

Nun meine Fragen:
Kann ich das alles in ein Define stecken?
Nehme ich dafür set01Data, set02Data (um das Input Field eines vorherigen Requests zu nutzen)? Werden die nacheinander abgearbeitet?
Ist set01Data genau so zu benutzen wie requestData?
Muss ich dann für jedes set einen Header (Content-Type etc.) set01Header etc. bauen, auch wenn der gleich ist?
Kann ich das extrahierte Input irgendwie on-the-fly als url-encoded abspeichern zur weiteren Nutzung?

Wenn ich das beantwortet bekomme, kriege ich es bestimmt doch noch gelöst.. :)

Viele Grüße
Ronny
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BillyPbg am 20 März 2017, 18:45:20
Zitat von: StefanStrobel am 18 März 2017, 23:13:40
...
Jetzt hast Du mich etwas verwirrt. Mit welcher Version hast Du weitere Warnings?
Mit der neuesten ( 3.3.8 ) oder mit einer älteren?
Wenn es keine neuen Probleme gibt, würde ich die 3.3.8 demnächst einchecken.
...

Hallo Stefan,

nach Einspielung der V.3.3.8 entstehen durch das Submodul in 99_MyUtils in meinem "MUELL"-Kalender folgende neue Einträge:

LOG:

...
2017.03.20 18:49:29.658 1: MUELL:
Use of uninitialized value in split at ./FHEM/99_MyUtils.pm line 398.
Use of uninitialized value in split at ./FHEM/99_MyUtils.pm line 398.
Use of uninitialized value in split at ./FHEM/99_MyUtils.pm line 398.
Use of uninitialized value in split at ./FHEM/99_MyUtils.pm line 398.
Use of uninitialized value in split at ./FHEM/99_MyUtils.pm line 398.
...
2017.03.20 18:50:17.549 1: MUELL:
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $desc in string eq at ./FHEM/99_MyUtils.pm line 411.
Use of uninitialized value $suma in concatenation (.) or string at ./FHEM/99_MyUtils.pm line 414.
...


SUBMODUL (perl.pl und Calendar im Anhang):

sub
Abfalltermine($)
{
   my ($MUELL) = @_; 
   Log3 "Abfalltermine_sub",1,"$MUELL: ";
   my $t  = time;
   my $termin;
   my @tage = ('Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag');
   my @monate = ('Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
   my ($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst);
   my @pos = ("3", "2", "1", "5", "4");
   my @TonnenBez = ("Papiersammlung", "GelberSack", "Restmuell","Biomuell","Schadstoffsammlung");
   my @SuchTexte = ("Papier.*", "Gelber.*", "Rest.*", "Bio.*", "Schadstoff.*");
   my $uid;
   my $suma;
   my $desc;
   my $dayDiff;

   my $oll = $attr{global}{verbose};
   $attr{global}{verbose} = 0;
   #my @logdata = split("\n", fhem("get $logfile - - $period_s $period_e $cspec"));
   #$attr{global}{verbose} = $oll;

   for(my $i=0; $i<5; $i++)
   {
      $dayDiff = -1; #BUG behoben
Line 398:  my @uids = split(/;/,fhem("get $MUELL find $SuchTexte[$i]"));

      # den nächsten Termine finden
      foreach $uid (@uids)
      {
         my $eventDate = KalenderDatum($MUELL, $uid);
         my $dayDiffNeu = floor(($eventDate - $t) / 60 / 60 / 24 + 1);
         if ($dayDiffNeu >= 0 && ($dayDiffNeu < $dayDiff || $dayDiff == -1)) #BUG behoben
         {
            $dayDiff = $dayDiffNeu;
            $suma = fhem("get $MUELL summary ".$uid);
            $desc = fhem("get $MUELL description ".$uid);

Line 411:   if ($desc eq ""){$desc = "--- Nicht vorhanden ---"};
            ($sec, $min, $stunde, $mtag, $mon, $jahr, $tag, $nr_tag, $isdst) = localtime($eventDate);
    $termin = "$tage[$tag], $mtag. $monate[$mon]";
Line 414    fhem("setreading MuellterminDummy $pos[$i]e_$TonnenBez[$i]_Titel $suma;
                  setreading MuellterminDummy $pos[$i]f_$TonnenBez[$i]_Beschreibung $desc;
                  setreading MuellterminDummy $pos[$i]a_$TonnenBez[$i]_UID $uid;
                  setreading MuellterminDummy $pos[$i]b_$TonnenBez[$i]_Termin_dec $eventDate;
                  setreading MuellterminDummy $pos[$i]d_$TonnenBez[$i]_Termin $termin;
                  set $TonnenBez[$i] $termin \(noch $dayDiff Tage...\)");
         }
      }
            fhem("setreading MuellterminDummy $pos[$i]c_$TonnenBez[$i]_noch_Tage $dayDiff");   
    } 
    $attr{global}{verbose} = $oll;   
    Log3 "Abfalltermine_sub",3,"$MUELL: TERMINE eingelesen und verarbeitet.";
}


VG.
BillyPbg
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 März 2017, 22:53:46
Hallo BillyPbg,

ich verstehe zwar nicht was Dein Abfallkalender mit HTTPMOD zu tun hat,
aber spontan würde ich die entsprechenden Zeilen in Deine MyUtils.pm fixen.

In Zeile 411 sollte z.B. statt

if ($desc eq "")

besser

if (!$desc)

stehen.

Wo wird denn hier HTTPMOD verwendet?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 März 2017, 23:23:23
Hi Ronny,

Zitat von: FHEMAN am 20 März 2017, 00:17:02
Kann ich das alles in ein Define stecken?
Nehme ich dafür set01Data, set02Data (um das Input Field eines vorherigen Requests zu nutzen)? Werden die nacheinander abgearbeitet?
Ist set01Data genau so zu benutzen wie requestData?
Muss ich dann für jedes set einen Header (Content-Type etc.) set01Header etc. bauen, auch wenn der gleich ist?
Kann ich das extrahierte Input irgendwie on-the-fly als url-encoded abspeichern zur weiteren Nutzung?

die Attribute set01... gehören zum ersten Set. set02 zu einem zweiten Set.
Wenn Du die POST-Daten für den ersten Set auf mehrere Attribute verteilen möchtest, kannst Du set01Data01, set01Data02 etc. verwenden, Die werden verkettet.
set01Data wird ansonsten wie requestData verwendet, gilt aber für den Set-Befehl.
Um die Header nicht immer wieder zu kopieren kannst Du auch statt set01Header setHeader verwenden. Diese Attribute werden dann für alle Sets verwendet.
Speichern in einer Datei habe ich eigentlich nicht vorgesehen. Die Idee wäre eher die relevanten Daten eines früheren Requets in Readings zu legen und beim nächsten Request über die Replacement-Attribute wieder einzubauen.

Gruss / viel Erfolg
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 21 März 2017, 11:06:43
Zitat von: FhemPiUser am 11 März 2017, 20:37:21
Gibt es die Möglichkeit mit einem attribut HTTPMOD zu sagen, dass es nur einen Teil einer HTTP-Seite abrufen soll? Ich möchte eine Webseite parsen, die ziemlich lang ist, benötige aber eigentlich nur die ersten 2kbyte. Optimal wäre, wenn ich ihm sagen könnte, er soll nur die ersten 2 kbyte abrufen...

Zitat von: StefanStrobel am 12 März 2017, 16:09:14
Hallo FhemPiUser,

so eine Möglichkeit gibt es derzeit nicht.

Gruss
    Stefan

Hallo Stefan,

an langen HTTP-Seiten stört mich aktuell eher das laaaaaange Internal buf.
Kann man das vielleicht ohne großen Aufwand optional "nicht" bzw. mit ".buf" statt "buf" speichern oder hast Du andere Vorschläge für eine kürzere Anzeige?

Viele Grüße
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: BillyPbg am 21 März 2017, 14:14:15
[quote author=StefanStrobel link=topic=45176.msg608865#msg608865 date=1490046826]
...
ich verstehe zwar nicht was Dein Abfallkalender mit HTTPMOD zu tun hat,
aber spontan würde ich die entsprechenden Zeilen in Deine MyUtils.pm fixen.
...


Hallo Stefan,

was HTTPMOD mit dem ('MUELL'-)Calendar-Modul zu tun hat, versteh' ich auch nicht.
Ich kann Dir jedoch mein Recherche-Ergebnis mitteilen...

Nachdem ich nicht vom Fach bin, habe ich nach der Methode "Try and Error", unterstützt durch 'Winmerge' das Folgende herausgefunden:

Die Meldungen werden ausgelöst, unabhägig voneinander, in Zeile 473, 503, 539 und 1685:  Jeweils " $SIG{__WARN__} = 'DEFAULT'; " (Siehe Anlage, mit '#Bi' versehene Zeilen)
Seitdem ich diese Zeilen ausge-'#' hatte, war alles unauffällig.
Ich hoffe, Du kannst damit was anfangen...

Wenn ich Dir mit weiteren Zulieferungen zum Nachbau weiterhelfen kann, gerne.

VG.
BillyPbg

PS:
Danke für Deinen Fix-Vorschlag, wurde sofort umgesetzt, hatte aber keine Auswirkung auf das Fehlerbild.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 März 2017, 18:12:10
Hallo,

das ist vermutlich die falsche Stelle.
Ich definiere vor der Evaluation von Perl-Code aus Attributen einen eigenen Handler für Warnings um eben diese Warnings besser ins Log zu packen. Direkt danach setze ich den Handler zurück auf Default.
Wenn Du diese Zeilen auskommentierst ist es klar dass die Warnings nach wie vor abgefangen werden. Damit bekämpfst Du aber nur das Symptom und nicht die Ursache...

Wenn Du wie von mir empfohlen den Code in Deiner MyUtils an allen relevanten Stellen änderst, so dass ein undef als Rückgabewert des Get-Aufrufs erkannt wird, wäre das am saubersten.
Die Änderung in Zeile 411 alleine reicht natürlich noch nicht.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 März 2017, 18:13:28
Hallo Manfred,

wegen der langen Anzeige von buf werde ich mir was überlegen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 21 März 2017, 20:07:54
Zitat von: StefanStrobel am 21 März 2017, 18:13:28
Hallo Manfred,

wegen der langen Anzeige von buf werde ich mir was überlegen.

Gruss
   Stefan
An diesen Wunsch hänge ich mit dran, mein buf bringt einen Handybrowser zum Absturz.

Danke, SG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 22 März 2017, 02:38:35
Zitat von: StefanStrobel am 20 März 2017, 23:23:23
Hi Ronny,

die Attribute set01... gehören zum ersten Set. set02 zu einem zweiten Set.
Wenn Du die POST-Daten für den ersten Set auf mehrere Attribute verteilen möchtest, kannst Du set01Data01, set01Data02 etc. verwenden, Die werden verkettet.
set01Data wird ansonsten wie requestData verwendet, gilt aber für den Set-Befehl.
Um die Header nicht immer wieder zu kopieren kannst Du auch statt set01Header setHeader verwenden. Diese Attribute werden dann für alle Sets verwendet.
Speichern in einer Datei habe ich eigentlich nicht vorgesehen. Die Idee wäre eher die relevanten Daten eines früheren Requets in Readings zu legen und beim nächsten Request über die Replacement-Attribute wieder einzubauen.

Gruss / viel Erfolg
   Stefan

Okay, ich habe es nun in zwei separate Defines gepackt und lese die Readings mit notify aus. Das klappt ganz gut.
Nun ist es so, dass wenn ein readingXRegex nicht matcht, dass dann trotzdem etwas im Reading stehen bleibt. Ich würde es gerne leer haben, um mit einem Event darauf zu reagieren. Also wenn die Seite nichts anzeigt, dann soll das Reading gelöscht werden.
Gibt es dafür eine Einstellung?

Viele Grüße
Ronny

PS: Schöner Timestamp übrigens von Deinem Posting :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 22 März 2017, 08:16:46
Hallo Ronny,

hast Du MaxAgeReplacementMode "delete" schon versucht?
https://wiki.fhem.de/wiki/HTTPMOD#replacing_reading_values_when_they_have_not_been_updated_.2F_the_device_did_not_respond (https://wiki.fhem.de/wiki/HTTPMOD#replacing_reading_values_when_they_have_not_been_updated_.2F_the_device_did_not_respond)

Viele Grüße
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 22 März 2017, 09:56:02
Zitat von: FHEMAN am 22 März 2017, 02:38:35
Okay, ich habe es nun in zwei separate Defines gepackt und lese die Readings mit notify aus. Das klappt ganz gut.
Nun ist es so, dass wenn ein readingXRegex nicht matcht, dass dann trotzdem etwas im Reading stehen bleibt. Ich würde es gerne leer haben, um mit einem Event darauf zu reagieren. Also wenn die Seite nichts anzeigt, dann soll das Reading gelöscht werden.
Gibt es dafür eine Einstellung?

Zitatget|reading[0-9]*DeleteIfUnmatched
If set to 1 this attribute causes certain readings to be deleted when the parsing of the website does not match the specified reading. Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be deleted if the same operation does not parse this reading again. This is especially useful for parsing that creates several matches / readings and this number of matches can vary from request to request. For example if reading01Regex creates 4 readings in one update cycle and in the next cycle it only matches two times then the readings containing the remaining values from the last round will be deleted.
Please note that this mechanism will not work in all cases after a restart. Especially when a get definition does not contain its own parsing definition but ExtractAllJSON or relies on HTTPMOD to use all defined reading.* attributes to parse the responsee to a get command, old readings might not be deleted after a restart of fhem.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mahowi am 22 März 2017, 10:11:30
Zitat von: mahowi am 14 März 2017, 23:31:22
Kann ich eigentlich auch irgendwie ein "HTTP DELETE" mit HTTPMOD abschicken? Ich kann bei meiner Heizungssteuerung (tado°) per PUT in den manuellen Modus mit einer bestimmten Temperatur schalten. Um aber wieder in den Automatikmodus zu gehen, muß ich die manuelle Kontrolle per "DELETE" wieder löschen. Die Beschreibung gibt es unter /api/v2/homes/<homeID>/zones/1/overlay auf The Tado API v2 in Stephen C Phillips' Blog (http://blog.scphillips.com/posts/2017/01/the-tado-api-v2/).
Weiß dafür jemand ne Antwort? Oder vielleicht eine Möglichkeit, das mit FHEM Mitteln anders zu machen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 22 März 2017, 10:48:52
Zitat von: mahowi am 22 März 2017, 10:11:30
Weiß dafür jemand ne Antwort? Oder vielleicht eine Möglichkeit, das mit FHEM Mitteln anders zu machen?
hast du mal versucht den angegebenen curl-befehl auf perl-ebene mit dem befehl system oder qx zu senden?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mahowi am 22 März 2017, 10:59:27
Stimmt, daran hatte ich gar nicht gedacht. Das müsste gehen. Sollte auch mit Perl und HTTP::Request->new(DELETE => $url); funktionieren.

Schön wäre natürlich, wenn das auch direkt in HTTPMOD möglich wäre.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 März 2017, 18:31:28
HTTPMOD verwendet bisher die HttpUtils von Fhem als Basis.
Um Delete zu unterstützen, müssten diese erweitert werden.
Da der Anwendungsfall aber extrem selten ist, vermute ich dass es sinnvoller ist in so einem Fall eine individuelle Lösung zu suchen (externer Aufruf oder Perl code ...)

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mahowi am 22 März 2017, 20:13:26
Ok. Ich hatte mir die HttpUtils.pm noch nicht so genau angesehen. Im Wiki habe ich nur den Eintrag über $param->{method} gefunden:
ZitatDie HTTP-Methode, welche zur Abfrage verwendet werden soll. Sofern keine Daten übertragen werden ist dies standardmäßig "GET", ansonsten "POST". Es können aber auch andere Methoden verwendet werden.
Standardwert: "GET"

Den Parameter scheint es aber nur bei HttpUtils_BlockingGet zu geben, zumindest laut Wiki.

Aber Du hast recht, der Anwendungsfall für was anderes als POST oder GET ist wirklich selten.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEMAN am 27 März 2017, 00:31:35
Hallo Manfred, hallo Frank, danke für Eure Hinweise. (Ich hatte mich zuletzt am veralteten Wiki aufgehalten) Mit readingXDeleteIfUnmatched funktioniert es nun.

Gibt es so eine Funktion auch für das LAST_RERROR Reading? Ich möchte gerne, dass sich das bei erfolgreichem Response löscht.

Gruß
Ronny
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 27 März 2017, 10:58:07
Zitat von: FHEMAN am 27 März 2017, 00:31:35
Gibt es so eine Funktion auch für das LAST_RERROR Reading? Ich möchte gerne, dass sich das bei erfolgreichem Response löscht.

Nein, da das Reading den letzten Fehler und nicht den aktuellen Verbindungsstatus anzeigen soll.
Was möchtest Du denn damit erreichen? Eventuell funktioniert ja die Umkehr und Du kennzeichnest nicht aktuelle Daten mit Hilfe von MaxAge als nicht aktuell".

Viele Grüße
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 27 März 2017, 11:23:02
erfolgreiche aktionen stelle ich durch auswerten des readings MATCHED_READINGS fest.
mit einem notify auf MATCHED_READINGS könntest du es checken und zb das reading LAST_ERROR löschen oder mit setreading überschreiben.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 März 2017, 19:50:15
Hallo,

anbei eine neue Version zum Testen.
Es gibt jetzt ein Attribut mit Namen removeBuf. Wenn das auf 1 gesetzt wird, löscht HTTPMOD im Read Callback das Internal Buf. Dieses wird von den Fhem HttpUtils erzeugt / verwendet und ist in manchen Anwendungsfällen störend.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 27 März 2017, 19:58:54
Hallo Stefan,

funktioniert... Buf wird beim Aktualisieren nach wie vor vorübergehend angezeigt, dann jedoch gelöscht. Nicht ganz perfekt, aber deutlich angenehmer als die dauerhafte Anzeige.

Danke
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 März 2017, 20:24:39
Hallo Manfred,

komplett verhindern kann ich die Erzeugung von Buf nicht. Das machen eben die HttpUtils.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 27 März 2017, 20:28:21
Zitat von: StefanStrobel am 27 März 2017, 20:24:39
Hallo Manfred,

komplett verhindern kann ich die Erzeugung von Buf nicht. Das machen eben die HttpUtils.

Gruss
    Stefan

Speichern die HttpUtils das sofort als Reading oder machst Du das im Modul? Mit den HttpUtils habe ich mich noch nicht befasst, Dein Modul macht zum Glück soviel, dass ich mich mit meinem Modul einfach drauf gesetzt habe. Aber wenn ich mir das Device ansehe, dann ist es zumindest meistens kürzer, also schon mal sehr angenehm!

Viele Grüße
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 März 2017, 20:01:13
Hallo,

Buf ist kein Reading sondern ein Internal bzw. aus Modulsicht einfach nur die Variable $hash->{Buf}.
die HttpUtils verwenden diese Variable beim Lesen der Antwort aus der HTTP-Verbindung.
Das neue Attribut führt dazu dass HTTPMOD die Variable bei der ersten Gelegenheit löscht.
Hübscher könnte es nur werden, wenn man HttpUtils patcht, aber das würde möglicherweise bei anderen Modulen zu Problemen führen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JackWolfskind am 05 Mai 2017, 12:54:13
Leider gelingt es mir nicht gültige JSON Daten per HTTPMod von einem SolarLog zu erhalten.

Auf dem Raspi per Curl klappt es sogar einzeln die möglichen JSON Werte abzufragen, z.B.so:
curl -X POST -H "Content-Type: application/json" -d '{"782":{"0":null,"1":null,"2":null}} ' solarlog/getjp
liefert mir -> {"782":{"0":"223","1":"0","2":"14"}}
Auch mit NodeRed kriege ich eine korrekte Antwort.

Nur wenn ich das gleiche per HTTPMOd versuche:
attr solarlogJSON getData {"get" :["782":{"0":null,"1":null,"2":null}]}   

klappt die Zerlegung nicht da ich nur eine ungültige JSON Antwort im BUF bekomme: >:(
2017.04.19 16:08:15 3: solarlogJSON: error while parsing JSON data: , or } expected while parsing object/hash, at character offset 10 (before ":{"0":"171","1":"104...") at (eval 15234) line 1.

buf=HTTP/1.0 200 OK Date: Wed, 19 Apr 2017 16:08:18 GMT Server: IPC@CHIP Content-Type: text/plain {"0":"782":{"0":"171","1":"1040","2":"45"....

Das hier: {"0":"782": ist eindeutig nicht valide, aber warum liefert mir nur HTTPMOD eine falsche Antwort? Ist mein Get falsch formatiert oder geht da was in der Verarbeitung in HTTPMOD durcheinander?
Gruss,
Frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Mai 2017, 20:49:30
Hallo Frank,

warum schickst Du mit HTTPMOD eine andere Anfrage als mit CURL?
{"get" :["782":{"0":null,"1":null,"2":null}]}
statt
{"782":{"0":null,"1":null,"2":null}}

Was für Header schickst Du denn bei HTTPMOD mit?
Wenn Du wirklich die gleiche Anfrage hinschickst, wird auch die gleiche Antwort kommen ...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JackWolfskind am 05 Mai 2017, 22:05:01
 ???da hab ich wohl das PoolManager Beispiel auf deiner? HTTPMOD Wiki Seite voellig falsch verstanden  ;D
Ja wenn ich jetzt das "get" wegmache klappts auch mit der gleichen Antwort !!!
Jetzt ueb ich mich mal am JSON zerlegen  ;)

Vielen Dank fuer die schnelle Antwort!
Frank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 Mai 2017, 20:40:25
Hallo,

anbei eine neue Version mit verbessertem Warning-Handler für Expressions aus Attributen.
Es wäre schön wenn Ihr kurz prüfen könntet, ob die Version bei Euch Probleme macht, bevor ich sie einchecke.

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 16 Mai 2017, 21:50:28
Ich habe ein Problem mit dem löschen alter Readings. Hier das Listing
Internals:
   BUSY       0
   DEF        http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg 0
   Interval   0
   LASTSEND   1494963610.13992
   MainURL    http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
   MaxAgeEnabled 1
   ModuleVersion 3.3.11 - 8.5.2017
   NAME       BVG
   NR         122
   STATE      22 min und 17 min (21:40)
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://transportrest-sbiermann.rhcloud.com:80
   buf
   code       200
   conn
   data
   displayurl http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
   header
   host       transportrest-sbiermann.rhcloud.com
   httpheader HTTP/1.1 200 OK

Date: Tue, 16 May 2017 19:40:11 GMT

Server: Apache-Coyote/1.1

Content-Type: application/json;charset=UTF-8

Content-Length: 389

Vary: Accept-Encoding

Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 1
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /departureFHEM?from=9051371&provider=Bvg
   protocol   http
   redirects  0
   timeout    30
   url        http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
   value      0
   QUEUE:
   Readings:
     2017-05-16 21:40:12   Uni1            22
     2017-05-15 17:18:58   Uni2            17
     2017-05-15 17:18:58   Uni3            20
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
     value      0
   Defptr:
     Readingbase:
       Uni1       reading
     Readingnum:
       Uni1       01
     Readingoutdated:
     Requestreadings:
       Update:
         Uni1       reading 01
   Sslargs:
Attributes:
   alias      X10 ab Oskar-Helene
   enableControlSet 1
   eventMap   /reread:einlesen/
   group      BVG
   reading01-1Name Uni1
   reading01-2Name Uni2
   reading01-3Name Uni3
   reading01MaxAge 60
   reading01MaxAgeReplacementMode delete
   reading01Name Uni1
   reading01OExpr $val
   reading01RegOpt g
   reading01Regex \[\"X10\"\,\"S\+U Zoologischer Garten\"\,\"(\d\d+)\"\]
   reading01URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
   room       App,Unsorted
   stateFormat {my $zeit = ReadingsTimestamp("$name","Uni1",0);
$zeit =~ /.* (\d\d:\d\d).*/; # Abruf-Uhrzeit extrahieren
$zeit = sprintf("%.f"." min",ReadingsVal($name,"Uni1","-1"))." und ".
sprintf("%.f"." min",ReadingsVal($name,"Uni2","-1"))." (".$1.")";# Ausgabe Readings
$zeit =~ s/und -1 min//; # evtl fehlendes Reading loeschen
return $zeit}
   timeout    30
   userattr   reading01-1Name reading01-2Name reading01-3Name reading01MaxAge reading01MaxAgeReplacementMode reading01MaxAgeReplacementMode:text,reading,internal,expression,delete reading01Name reading01OExpr reading01RegOpt reading01Regex reading01URL
   webCmd     einlesen


und der Fehler, wenn es denn einer ist, besteht darin, dass die alten Readings erhalten bleiben:
Readings
Uni1 22 2017-05-16 21:40:12
Uni2 17 2017-05-15 17:18:58 <== dieser hier
Uni3 20 2017-05-15 17:18:58 <== und dieser hier
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 17 Mai 2017, 20:09:43
Hallo andies,

das ist seltsam. Eigentlich sollte unter defptr und readingBase ein Eintrag für die alten Reafings stehen. Der wird von MaxAge verwendet und fehlt bei Dir im Listing.
Bei einem Fhem Neustart sollte dieser Eintrag zudem rekonstruiert werden.

Könntest Du ein Log mit Verbose 5 erzeugen, bei dem man sieht, wie eines der veralteten Readings erzeugt wird und was beim Neustart von Fhem in updateRequestHash passiert?

Oder möchtest Du evt. eher das Attribut deleteIfUnmatched verwenden?

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 18 Mai 2017, 08:30:19
Danke für die Hilfe! Ich habe erstmal (von unterwegs) mit verbose 5 einen neuen Abruf gemacht sowie vorab einen Neustart (bei dem aber verbose vergessen). Meine Vermutung ist, dass da schon das Problem erkennbar sein könnte, leider für mich als Anfänger nicht:


2017.05.18 08:26:01 5: BVG: set called with reread
2017.05.18 08:26:01 4: BVG: GetUpdate called (reread)
2017.05.18 08:26:01 4: BVG: AddToQueue adds update, initial queue len: 0
2017.05.18 08:26:01 5: BVG: AddToQueue adds type update to URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg, no data, no headers, retry 0
2017.05.18 08:26:01 5: BVG: HandleSendQueue called, qlen = 1
2017.05.18 08:26:01 4: BVG: HandleSendQueue sends request type update to URL http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg, No Data, No Header,
timeout 30
2017.05.18 08:26:01 4: HttpUtils url=http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg
2017.05.18 08:26:01 5: HttpUtils request header:
GET /departureFHEM?from=9051371&provider=Bvg HTTP/1.0
Host: transportrest-sbiermann.rhcloud.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.05.18 08:26:04 4: http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg: HTTP response code 200
2017.05.18 08:26:04 4: HttpUtils http://transportrest-sbiermann.rhcloud.com/departureFHEM?from=9051371&provider=Bvg: Got data, length: 365
2017.05.18 08:26:04 5: HttpUtils response header:
HTTP/1.1 200 OK
Date: Thu, 18 May 2017 06:26:04 GMT
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 365
Vary: Accept-Encoding
Connection: close
2017.05.18 08:26:04 4: BVG: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Date: Thu, 18 May 2017 06:26:04 GMT
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 365
Vary: Accept-Encoding
Connection: close,
Body: [["X10","S+U Zoologischer Garten","2"],["285","Dahlem Waldfriedhof","2"],["X10","Rammrath-Brücke","6"],["115","U Fehrbelliner Platz","10"],["115","Düppel-Süd, Neuruppiner Str.","12"],["X10","S+U Zoologischer Garten","14"],["285","S+U Rathaus Steglitz","15"],["X10","S Teltow Stadt","19"],["X10","S+U Zoologischer Garten","19"],["285","Dahlem Waldfriedhof","24"]]
2017.05.18 08:26:04 5: BVG: ExtractSid called, context reading, num
2017.05.18 08:26:04 5: BVG: MaxAge: check reading Uni1
2017.05.18 08:26:04 5: BVG: MaxAge: reading Uni1 doesn't come from a -Name attr -> skipping
2017.05.18 08:26:04 5: BVG: MaxAge: check reading Uni2
2017.05.18 08:26:04 5: BVG: MaxAge: reading Uni2 doesn't come from a -Name attr -> skipping
2017.05.18 08:26:04 5: BVG: MaxAge: check reading Uni3
2017.05.18 08:26:04 5: BVG: MaxAge: reading Uni3 doesn't come from a -Name attr -> skipping
2017.05.18 08:26:04 4: BVG: CheckAuth decided no authentication required
2017.05.18 08:26:04 5: BVG: UpdateReadingList created list of reading.* nums to parse during getUpdate as 01
2017.05.18 08:26:04 5: BVG: Read starts parsing response to update with defined readings: 01
2017.05.18 08:26:04 5: BVG: ExtractReading Uni1 with regex /\[\"X10\"\,\"S\+U Zoologischer Garten\"\,\"(\d\d+)\"\]/g ...
2017.05.18 08:26:04 5: BVG: 2 capture group(s), matchlist = 14,19
2017.05.18 08:26:04 5: BVG: FormatReading changed value with Expr $val from 14 to 14
2017.05.18 08:26:04 4: BVG: ExtractReading for reading01-1 sets Uni1 to 14
2017.05.18 08:26:04 5: BVG: FormatReading changed value with Expr $val from 19 to 19
2017.05.18 08:26:04 4: BVG: ExtractReading for reading01-2 sets Uni2 to 19
2017.05.18 08:26:04 4: BVG: Read response to update matched Reading(s) Uni1 Uni2
2017.05.18 08:26:04 5: BVG: HandleSendQueue called, qlen = 0



Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 18 Mai 2017, 09:20:05
PS deleteifunmatched scheint mein konkretes Problem zu lösen.


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 Mai 2017, 21:17:28
Hallo andies,

vielen Dank!
Da war tatsächlich noch ein Bug, so dass MaxAge Readings nicht über einen Fhem-Restart hinweg verarbeitet.
In der nächsten Version ist das behoben.

In Deiner Konfiguration sind mir noch zwei Kleinigkeiten aufgefallen:

reading01OExpr $val ist völlig überflüssig und reading01URL gibt es nicht und wird nur akzeptiert wenn jemand das Attribut manuell als userAttr definiert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 21 Mai 2017, 21:09:32
Alles behoben, Danke!!


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 04 Juni 2017, 22:23:24
Ich habe ein Problem, für das ich bisher keine rechte Lösung finden konnte. Ich bin mir nicht sicher, ob überhaupt HTTPMOD das kann. Also, es geht wieder um diesen dussligen Speedport, der bei mir manchmal das Portforwarding ohne Anlass zu ändern scheint. Also will ich regelmäßig die Form automatisiert abschicken, in der die Ports festgelegt werden. Das geschieht mit einer POST-Form, habe ich in Burp herausgefunden. Der POST, der da abgeschickt wird, lautet wie folgt

POST /data/Portforwarding.json HTTP/1.1
Host: speedport.ip
Content-Length: 804
Accept: application/json, text/javascript, */*
Origin: http://speedport.ip
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Referer: http://speedport.ip/html/content/internet/portforwarding.html?lang=de
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: aDuPtHhDA80213deed20=qRzp3ep62calji#Rja1DlIUIE1ta2poHfDV0HlbhnbsxjXntYDUjvPRX; lang=de
Connection: close

tcp_redirect_active%5B1%5D=1&tcp_redirect_active%5B2%5D=1&tcp_redirect_active%5B3%5D=1&tcp_redirect_active%5B4%5D=1&tcp_redirect_active%5B5%5D=1&tcp_public_from%5B1%5D=8082&tcp_public_from%5B2%5D=8084&tcp_public_from%5B3%5D=8081&tcp_public_from%5B4%5D=8083&tcp_public_from%5B5%5D=8080&tcp_public_to%5B1%5D=8082&tcp_public_to%5B2%5D=8084&tcp_public_to%5B3%5D=8081&tcp_public_to%5B4%5D=8083&tcp_public_to%5B5%5D=8080&tcp_private_dest%5B1%5D=8085&tcp_private_dest%5B2%5D=443&tcp_private_dest%5B3%5D=80&tcp_private_dest%5B4%5D=80&tcp_private_dest%5B5%5D=80&tcp_device%5B1%5D=199&tcp_device%5B2%5D=103&tcp_device%5B3%5D=109&tcp_device%5B4%5D=112&tcp_device%5B5%5D=113&tcpredirect_id%5B1%5D=3&tcpredirect_id%5B2%5D=13&tcpredirect_id%5B3%5D=11&tcpredirect_id%5B4%5D=12&tcpredirect_id%5B5%5D=14&httoken=436759627

Der httoken (ganz am Ende) muss ausgelesen werden, weil er mit jedem Zugriff geändert wird. Die anderen Daten sind eigentlich auch veränderlich, das kann ich aber extern kontrollieren. Nun dachte ich, dass ich diesen POST wie folgt nachbaue
defmod Speedport2 HTTPMOD none 0
attr Speedport2 userattr get1Data get1Header1 get1Header2 get1Header3 get1Header4 get1Name get1URL sid1Header sid1IdRegex sid1URL sid2Data sid2Header1 sid2Header2 sid2URL
attr Speedport2 enableCookies 1
attr Speedport2 get1Data tcp_redirect_active%5B1%5D=1&tcp_redirect_active%5B2%5D=1&tcp_redirect_active%5B3%5D=1&tcp_redirect_active%5B4%5D=1&tcp_redirect_active%5B5%5D=1&tcp_public_from%5B1%5D=8082&tcp_public_from%5B2%5D=8083&tcp_public_from%5B3%5D=8080&tcp_public_from%5B4%5D=8081&tcp_public_from%5B5%5D=8084&tcp_public_to%5B1%5D=8082&tcp_public_to%5B2%5D=8083&tcp_public_to%5B3%5D=8080&tcp_public_to%5B4%5D=8081&tcp_public_to%5B5%5D=8084&tcp_private_dest%5B1%5D=8085&tcp_private_dest%5B2%5D=80&tcp_private_dest%5B3%5D=80&tcp_private_dest%5B4%5D=80&tcp_private_dest%5B5%5D=443&tcp_device%5B1%5D=199&tcp_device%5B2%5D=112&tcp_device%5B3%5D=113&tcp_device%5B4%5D=109&tcp_device%5B5%5D=103&tcpredirect_id%5B1%5D=1&tcpredirect_id%5B2%5D=3&tcpredirect_id%5B3%5D=4&tcpredirect_id%5B4%5D=5&tcpredirect_id%5B5%5D=6&httoken=$sid
attr Speedport2 get1Header1 Origin: http://speedport.ip
attr Speedport2 get1Header2 Referer: http://speedport.ip/html/content/internet/portforwarding.html?lang=de
attr Speedport2 get1Header3 Content-Type: application/x-www-form-urlencoded
attr Speedport2 get1Header4 X-Requested-With: XMLHttpRequest
attr Speedport2 get1Name Portforwarding
attr Speedport2 get1URL http://speedport.ip/data/Portforwarding.json
attr Speedport2 reAuthRegex 501 Not Implemented
attr Speedport2 sid1Header Content-Type: text/html
attr Speedport2 sid1IdRegex _httoken = (\d*)
attr Speedport2 sid1URL http://speedport.ip/html/login/index.html?lang=de
attr Speedport2 sid2Data password=XXXXXXXXXXXXXXXXXXXXXXX&showpw=0&httoken=$sid
attr Speedport2 sid2Header1 Content-Type: application/json
attr Speedport2 sid2Header2 Referer: http://speedport.ip/html/login/index.html?lang=de
attr Speedport2 sid2URL http://speedport.ip/data/Login.json


Ich sehe, dass das einloggen klappt und es wird dann anscheinend auch gesendet, denn im Log lese ich
2017.06.04 22:11:12 5: HttpUtils request header:
POST /data/Portforwarding.json HTTP/1.0
Host: speedport.ip
User-Agent: fhem
Origin: http://speedport.ip
Referer: http://speedport.ip/html/content/internet/portforwarding.html?lang=de
Content-Type: application/x-www-form-urlencoded
X-Requested-With: XMLHttpRequest
Cookie: aDuPtHhDA802e0a870=deleted; aDuPtHhDA802f6cf8a=MSGG8qlVw4zC9pmPdWGBsBGU3wqLl3dXtIDRXNNtqlUN1gC4dqdvQ
Content-Length: 801

2017.06.04 22:11:12 4: http://speedport.ip/data/Portforwarding.json: HTTP response code 200
2017.06.04 22:11:12 4: HttpUtils http://speedport.ip/data/Portforwarding.json: Got data, length: 57

Allerdings steht dann weiter unten
2017.06.04 22:11:12 4: Speedport2: Read callback: request type was get1 retry 1,
Header: HTTP/1.1 200 OK
Server: Apache
Pragma: no-cache
Cache-Control: max-age=0, must-revalidate
Set-Cookie: aDuPtHhDA802e0a870=deleted; Path=/; Expires=Thu, 30 Aug 2012 03:17:38 GMT; HttpOnly
Connection: close
Content-type: application/javascript
Pragma: no-cache
Cache-Control: no-cache
Expires: -1,
Body: [{"vartype":"status","varid":"status","varvalue":"fail"}]

und letzteres heißt, dass das Überschreiben der Werte nicht geklappt hat.

Der Speedport nervt, aber leider brauche ich den wegen Telekom-Fon. Sieht jemand, was ich falsch mache?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 27 Juli 2017, 09:14:13
Anfrage Obsolete, alles im WIKI doch gefunden

Hallo zusammen,

ich möchte mit dem HTTPMOD von zwei URLs JSON-String in einem HTTPMOD-Device parsen und zwar möchte ich vermeiden alles mit ExtractAllJSON zu machen, da die Liste mit Readings zu lang wäre.
Im WIKI habe ich kein Beispiel zu gefunden. -> Natürlich gibt es im WIKI ein Beispiel... wer lesen kan ist klar im Vorteil

Was im WIKI beshchrieben ist:
- 1 URL und ausgewählte Readings
- 2 URLs dann aber alle Readings

Meine Frage ist:
- 2 URLs und ausgewählte Readings
Geht das? Und wenn Ja wie würden in etwa zu setztenden Attribute für get01 bzw get02 aussehen. -> jap das geht

Danke und Gruß
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 06 Februar 2018, 10:16:21
Hallo,

ich bastele derzeit (mal immer wieder so a bisserl) an dem TVhelper 2.0, der relativ einfach readingGroups aus dem TV - Programm von klack erzeugt. Dabei habe ich vor einiger Zeit das httpmod - Modul etwas missbraucht. Ich habe den internen Buffer ($hash->{buf}) der geladenenen Seite "zu Fuß" nach "tittle...." durchsucht, um die Sendernamen, die die klack - Seite anbietet, zu finden, um so eine Liste der aktuellen Sendernamen auszugeben.
Gestern habe ich nun festgestellt, dass wohl das httpmod - Modul umgestellt wurde und es den Buffer wohl nicht mehr unter ->{buf} gibt.
Gibt es noch eine andere Möglichkeit, an den Speicherbereich zu kommen, um den Inhalt der Webseite zu durchsuchen?
Das {join(' ',sort keys %{$defs{'TV_Programm'}})} liefert:
.getList .readingParseList .setList .updateRequestHash .userReadings BUSY DEF Interval LASTSEND MainURL ModuleVersion NAME NR QUEUE READINGS REQUEST STATE TRIGGERTIME TRIGGERTIME_FMT TYPE addr auth callback code compress conn data defptr displayurl header host httpheader httpversion hu_blocking hu_filecount hu_port hu_portSfx ignoreredirects loglevel path protocol redirects sslargs timeout url value

Die geladene Webseite konnte ich da nicht finden?

Elektrolurch
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: SCMP77 am 06 Februar 2018, 12:21:33
Hallo,

Zitat von: Elektrolurch am 06 Februar 2018, 10:16:21
Gibt es noch eine andere Möglichkeit, an den Speicherbereich zu kommen, um den Inhalt der Webseite zu durchsuchen?

Wenn das parsen durch HTTPMOD nicht ausreichend ist, warum "missbrauchst" Du es dann um die Seite nur einzulesen? Wäre da nicht eine der Routinen aus  HttpUtils (https://wiki.fhem.de/wiki/HttpUtils) nicht sinnvoller (z.B. HttpUtils_NonblockingGet). dann hast Du doch vermutlich gleich den Body der Html-Seite in einem String und kannst ihn dann nach belieben parsen.



Gruß
   SCMP77
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 06 Februar 2018, 13:35:01
Zitat von: Elektrolurch am 06 Februar 2018, 10:16:21

Gestern habe ich nun festgestellt, dass wohl das httpmod - Modul umgestellt wurde und es den Buffer wohl nicht mehr unter ->{buf} gibt.


Das Attribut "removeBuf" hast Du nicht gesetzt, oder?
Ich bin fast überzeugt, dass das auch ohne das interne Nutzen von BUF geht, wenn Du dein Beispiel mal komplett postest, würd ich mal drüber schauen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 07 Februar 2018, 11:00:18
Hallo JoeALLd,

Frage: removeBuf = 0 => der Buffer wird nicht gelöscht?

Hintergrund: Im ersten Schritt für den TVhelper will ich erst einmal feststellen, welche Sendernamen es überhaupt auf der Seite gibt, um daus automatisiert die readings / attribute für httpmod zu befüllen. Bin ja faul und will mir Schreibarbeit sparen. Die Funktion unten wird quasi auch nur einmal aufgerufen, daher ist eine Abbildung in permanente readings für httpmod eigentlich auch nicht sinnvoll.


sub TVhelper_GetSenderlist($)
{
my ($hash) = @_;
my $name = $hash->{NAME};
# alle Titles in TV_Programm suchen
# zeigt auf den httpmod
my $tvnext = $hash->{tvnext};
return "no buffer loaded by $tvnext" if(!defined($defs{$tvnext}->{buf}));

my $s = \$defs{$tvnext}->{buf};

my %titles;

while ($$s =~m/title="([\w -]+)"></mig)
{
$titles{$1} = $1;
}
# Log(1,"gefundene titles:\n" . join("\n", sort keys %titles));
$hash->{senderList} = \%titles;
my $a = join("/", sort keys %titles);
return $a;
# Ausgabe: /sender1/sender2/...
} # TVhelper_GetSenderlist
################################


Die ausgegebene Liste kann man dann mit den Kanalnamen z.B. seines Enigma - Receivers ergänzen:

ZDF:/DF_HD/Das Erste:Das_Erste_Hd/...
und daraus generiert dann der TVhelper nach Vorlage automatisch die readingsGroup mit klickbaren Icons usw.
Der "Umweg" über die unter "Aktuelles TV-Programm" vorgestellte Excel-Tabelle war mir zu instabil, wenn man mal einen Sendernamen abändern musste.
Elektrolurch
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Februar 2018, 19:59:43
Hallo,

Die Ursache liegt eher bei den HttpUtils:
https://forum.fhem.de/index.php/topic,81099.0.html

Das Attribut removeBuf ist seither überflüssig und ich könnte alternativ ein showBuf einbauen...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 08 Februar 2018, 16:03:17
Hallo Stefan,

ein Attribut oder eine Subroutine z.B.

sub httpmod_GetBuf($);

returns pointer to buffer.

Wäre für mich ok. Ansonsten müsste ich mir nur für den einen Fall über die httputils und non-blocking das ganze nochmal aufbauen... ja eigentlich überflüssig.

Danke.

Elektrolurch

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Februar 2018, 20:46:02
Hallo,

probier doch mal die angehängte neue Version mit dem Attribut showBody.

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 17 Februar 2018, 10:19:43
Hallo Stefan,

funktioniert. Unter httpbody finde ich jetzt die geladenen Daten und es werden auch wieder alle TV - Sender angezeigt.
Danke. Könnte man also einchecken.

Elektrolurch
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tueftler1983 am 17 Februar 2018, 15:23:01
Ist es möglich HTTPMOD für Daten zu verwenden die mit Oauth und token gesichert sind?

Mit der alten API von DISCOVERGY konnte ich alle Daten meines Zählers abrufen

Jetzt mit der neuen API weiß ich nicht wie ich es anstellen muss
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 Februar 2018, 09:29:05
Hallo,

Möglich ist das vermutlich schon. Du müsstest ,,nur" die einzelnen Schritte mit sid-Attributen nachbilden und die Tokens jeweils extrahieren und in folgenden Schritten wieder einbauen.
Einfach wird das vermutlich nicht ...

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 15 März 2018, 21:24:26
Hallo nach update bekomme auf der Startseite von FHEM folgende Fehlermeldung:
Messages collected while initializing FHEM:
configfile: GigasetElements: unknown attribute removeBuf. Type 'attr GigasetElements ?' for a detailed list.
Heiztherme: unknown attribute removeBuf. Type 'attr Heiztherme ?' for a detailed list.
DR.Rasenmaehroboter.InternalLog: unknown attribute removeBuf. Type 'attr DR.Rasenmaehroboter.InternalLog ?' for a detailed list.
DR.Rasenmaehroboter: unknown attribute removeBuf. Type 'attr DR.Rasenmaehroboter ?' for a detailed list.

Autosave deactivated

Alle Devices sind HTTPMOD-Module

Was läuft hier falsch?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 März 2018, 21:51:13
Hallo,

removeBuf ist aufgrund einer Änderung in den HttpUtils sinnlos geworden. Es sollte entfernt werden.
Siehe weiter oben.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: josch123 am 01 Mai 2018, 13:02:07
Zitat von: ch.eick am 08 März 2017, 16:50:42
Das Login geht schon mal und wird hier später auch noch eingefügt.

Ich wollte den Beitrag noch einmal aufgreifen. Ich versuche mich gerade ähnlich wie Christian per HTTPMOD mit dem Cloud Service meiner Vallox KWL (https://cloud.vallox.com) zu verbinden. Für das Login Verfahren muss ich den CSRF Token im Header mit schicken. Dieser wird mir als Internal "HTTPCookies" zusammen mit einigen anderen Größen im HTTPMOD Device angezeigt. Jedoch scheitere ich bisher daran per RegEx den relevanten Teil aus dem Internal zu extrahieren. Christian hat leider auch nie seine Lösung gepostet :-(.

Anbei ein Auszug aus dem List für das Device
BUSY       0
   CFGFN     
   CHANGED   
   DEF        https://cloud.vallox.com/cloudui/index.html?deviceid=C7796DA7-F3B9-4B20-B56E-5521E0F0131B 100
   HTTPCookies _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=e1HW6HFB-sYrxo-LrdgVa5LvtYHdqYquMB5c; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de

...

Attributes:
   DbLogExclude .*
   authRetries 5
   enableCookies 1
   extractAllJSON 1
   get1Name   Test
   get1URL    https://cloud.vallox.com/api/devicestate/XXXXXXXXXXXX
   getHeader1 Host: cloud.vallox.com
   getHeader2 x-csrf-token: %%csrf_token%%
   getHeader3 Accept-Encoding: gzip, deflate
   getHeader4 Accept: application/json, text/javascript, */*; q=0.01
   reAuthAlways 1
   reAuthRegex password-input
   replacement01Mode expression
   replacement01Regex %%csrf_token%%
   replacement01Value {InternalVal("valloxtest","HTTPCookies","")}
   sid1Data   username=XX&password=YY
   sid1Header1 Host: cloud.vallox.com
   sid1Header2 Accept: application/json, text/plain, */*
   sid1Header3 X-XSRF-TOKEN: %%csrf_token%%
   sid1Header4 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
   sid1URL    https://cloud.vallox.com/login
   userattr   get1Name get1URL getHeader1 getHeader2 getHeader3 getHeader4 replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement1Mode:reading,internal,text,expression,key replacement1Regex replacement1Value sid1Data sid1Header1 sid1Header2 sid1Header3 sid1Header4 sid1URL
   verbose    5


Ich schaffe es per InternalVal("valloxtest","HTTPCookies","") den Wert des Internals abzufragen. Jedoch weiß ich bisher nicht wie ich den für mich relevanten Teil _csrfToken extrahiere. Das müsste nach meinem Verständnis per Regulärem Ausdruck (z.B. (?<=ken=)(.*)(?=; con)) gehen . Jedoch weiß ich nicht wie ich die beiden (InternalVal+RegEx) miteinander verbinde.

Beste Grüße,
Joschka
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Mai 2018, 19:52:23
Hallo Joschka,

Leider fehlen ein paar entscheidende Informationen um Dir helfen zu können.
Wie sieht die HTTP-Kommunikation denn genau aus? Wo und in welcher Form schickt der Server die Informationen und wie müssen sie wieder zurückgeschickt werden?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Mai 2018, 19:58:38
Anbei eine neue Version zum Testen.
Hinzugekommen ist das Attribut "enforceGoodReadingNames". Bei extractAllJSON konnten bisher ungültige Reading-Namen erzeugt werden. Wenn enforceGoodReadingNames auf 1 gesetzt ist, wird der Name durch die Funktion makeReadingName geschleust. Um keine Seiteneffekte auf bestehende Systeme zu erzeugen ist das ganze ein neues Attribut geworden. Ich würde es aber zu einem geeigneten Zeitpunkt per Default so machen (eigentlich hätte es schon immer makeReadingName verwenden sollen).

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 02 Mai 2018, 20:11:27
Hallo Stefan.
Ich habe ein Device, das ich über das Modul auslese.
Es funktioniert soweit sehr gut, doch leider benötige ich manchmal verschachtelte regex klammern, um Dinge komplett zu bekommen.
Was es mir extrem erleichtern würde wäre, wenn ich benannte Klammern als Readingnamen nutzen könnte... Damit könnte ich meine 300 Attribute auch gleich um mindestens 150 reduzieren ;-)

Hast Du dir das schon Mal überlegt? Regex-Parameter wie das Multiline funktioniert ja schon wunderbar und muss nicht mehr separat als eigenes Attribut angegeben werden....

SG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: josch123 am 02 Mai 2018, 23:19:29
Vielen Dank für die schnelle Rückmeldung.

Leider weiß ich nicht ganz wie die HTTP Kommunikation aussieht. Ich habe mich an dem Code von Christian orientiert und an dem was mir Burp ausgespuckt hat.

Ich hoffe das man aus dem Logfile diese Infos ziehen kann. Anbei ein Auszug:

2018.05.02 23:05:16 4: valloxtest: GetUpdate called (update)
2018.05.02 23:05:16 4: valloxtest: update timer modified: will call GetUpdate in 100.0 seconds at 2018-05-02 23:06:56
2018.05.02 23:05:16 4: valloxtest: Auth called with Steps: 1
2018.05.02 23:05:16 4: valloxtest: AddToQueue adds auth1, initial queue len: 0, prio
2018.05.02 23:05:16 5: valloxtest: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=XXXXXXX&password=XXXXXXX, header Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: %%csrf_token%%
Content-Type: application/x-www-form-urlencoded; charset=UTF-8, retry 0
2018.05.02 23:05:16 5: valloxtest: HandleSendQueue called, qlen = 1
2018.05.02 23:05:16 5: valloxtest: Replace called for type auth1, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input: Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: %%csrf_token%%
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2018.05.02 23:05:16 4: valloxtest: Replace: match for type auth1, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")}, input: Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: %%csrf_token%%
Content-Type: application/x-www-form-urlencoded; charset=UTF-8, result is Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
2018.05.02 23:05:16 5: valloxtest: Replace called for type auth1, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input: username=XXXXXXX&password=XXXXXXX
2018.05.02 23:05:16 5: valloxtest: Replace called for type auth1, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input: https://cloud.vallox.com/login
2018.05.02 23:05:16 5: valloxtest: HandleSendQueue is adding Cookies: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
2018.05.02 23:05:16 4: valloxtest: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=XXXXXXX&password=XXXXXXX,
header: Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de,
timeout 2
2018.05.02 23:05:16 5: HttpUtils url=https://cloud.vallox.com/login
2018.05.02 23:05:16 4: valloxtest: AddToQueue adds update, initial queue len: 0
2018.05.02 23:05:16 5: valloxtest: AddToQueue adds type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX, no data, no headers, retry 0
2018.05.02 23:05:16 5: valloxtest: HandleSendQueue called, qlen = 1
2018.05.02 23:05:16 5: valloxtest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.05.02 23:05:16 5: HttpUtils request header:
POST /login HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:16 4: https://cloud.vallox.com/login: HTTP response code 302
2018.05.02 23:05:16 4: HttpUtils https://cloud.vallox.com/login: Redirect to https://cloud.vallox.com:443/
2018.05.02 23:05:16 5: HttpUtils url=https://cloud.vallox.com:443/
2018.05.02 23:05:16 5: HttpUtils request header:
POST / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:16 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.05.02 23:05:16 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.05.02 23:05:16 5: HttpUtils url=https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils request header:
POST / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:17 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.05.02 23:05:17 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils url=https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils request header:
POST / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:17 5: valloxtest: HandleSendQueue called, qlen = 1
2018.05.02 23:05:17 5: valloxtest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.05.02 23:05:17 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.05.02 23:05:17 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils url=https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils request header:
POST / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:17 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.05.02 23:05:17 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils url=https://cloud.vallox.com:443/
2018.05.02 23:05:17 5: HttpUtils request header:
POST / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Host: cloud.vallox.com
Accept: application/json, text/plain, */*
X-XSRF-TOKEN: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 65

2018.05.02 23:05:17 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.05.02 23:05:17 3: valloxtest: Read callback: Error: https://cloud.vallox.com:443/: Too many redirects
2018.05.02 23:05:17 4: valloxtest: Read callback: request type was auth1 retry 0,
Header: HTTP/1.1 302 Found
Vary: X-HTTP-Method-Override, Accept, Accept-Encoding
Location: /
Content-Type: text/plain; charset=utf-8
Content-Length: 23
set-cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
Date: Wed, 02 May 2018 21:05:19 GMT
Connection: close, body empty
2018.05.02 23:05:17 5: valloxtest: looking for Cookies in HTTP/1.1 302 Found
Vary: X-HTTP-Method-Override, Accept, Accept-Encoding
Location: /
Content-Type: text/plain; charset=utf-8
Content-Length: 23
set-cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
Date: Wed, 02 May 2018 21:05:19 GMT
Connection: close
2018.05.02 23:05:17 5: valloxtest: Set-Cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
2018.05.02 23:05:17 4: valloxtest: Cookie: connect.sid Wert s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk Rest Path=/; HttpOnly
2018.05.02 23:05:17 5: valloxtest: ExtractSid called, context sid, num 1
2018.05.02 23:05:18 5: valloxtest: HandleSendQueue called, qlen = 1
2018.05.02 23:05:18 5: valloxtest: Replace called for type update, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input:
2018.05.02 23:05:18 5: valloxtest: Replace called for type update, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input:
2018.05.02 23:05:18 5: valloxtest: Replace called for type update, regex %%csrf_token%%, mode expression, value {InternalVal("valloxtest","HTTPCookies","")} input: https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX
2018.05.02 23:05:18 5: valloxtest: HandleSendQueue is adding Cookies: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
2018.05.02 23:05:18 4: valloxtest: HandleSendQueue sends request type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX, No Data,
header: Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de,
timeout 2
2018.05.02 23:05:18 5: HttpUtils url=https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX
2018.05.02 23:05:18 5: HttpUtils request header:
GET /cloudui/index.html?deviceid=XXXXXXX HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Cookie: _csrf=s%3AaO1YTrASIsYRNg8PzYFRaHAM.mpcO%2B6pzP%2B%2BFhkaqhtk1ocPtTCCnzogZH0EAGDlLv5Y; _csrfToken=CZpJc0Tu-I9LLFovCYfAaaT9rNic01-f2di4; connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.05.02 23:05:18 4: https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX: HTTP response code 200
2018.05.02 23:05:18 5: HttpUtils https://cloud.vallox.com/cloudui/index.html?deviceid=XXXXXXX: Got data, length: 1162
2018.05.02 23:05:18 5: HttpUtils response header:
HTTP/1.1 200 OK
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Wed, 09 May 2018 21:05:19 GMT
set-cookie: _csrfToken=cU4hPa7f-7JDPHEYW_OrkykbhLwzHYWE4JGg; Path=/
set-cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Fri, 14 Oct 2016 09:49:32 GMT
ETag: W/"48a-157c298bbe0"
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 02 May 2018 21:05:19 GMT
Connection: close
2018.05.02 23:05:18 4: valloxtest: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Wed, 09 May 2018 21:05:19 GMT
set-cookie: _csrfToken=cU4hPa7f-7JDPHEYW_OrkykbhLwzHYWE4JGg; Path=/
set-cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Fri, 14 Oct 2016 09:49:32 GMT
ETag: W/"48a-157c298bbe0"
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 02 May 2018 21:05:19 GMT
Connection: close,
Body: <!doctype html><html><head><title></title><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1"><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><link rel="stylesheet" href="css/minimzd.css"><script src="lib/jquery.js"></script><script src="js/config.js"></script><script src="lib/library.js"></script><script src="js/bundle.js"></script><script>$(document).ready(function(){configurationAfterReady(),Communication.initialize(),CreateDashBoard().showDashboard({cloud:!0}),document.title=L10n.locStr("id_text_web_info_content")});</script></head><body><div data-role="page" data-theme="a" id="dashboard-dashboard-page" class="dashboard-page"></div><div data-role="page" data-theme="a" id="dashboard-info-page" class="dashboard-page"></div><div data-role="page" data-theme="a" id="dashboard-service-page" class="dashboard-page"></div><div data-role="page" data-theme="a" id="dashboard-expert-page" class="dashboard-page"></div><div data-role="page" data-theme="a" id="dashboard-settings-page" class="dashboard-page"></div><div class="dlg-stack-overlay"></div><div id="dlg-window"></div></body></html>
2018.05.02 23:05:18 3: valloxtest: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "<!doctype html><html...") at (eval 182317) line 1.

2018.05.02 23:05:18 5: valloxtest: looking for Cookies in HTTP/1.1 200 OK
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Wed, 09 May 2018 21:05:19 GMT
set-cookie: _csrfToken=cU4hPa7f-7JDPHEYW_OrkykbhLwzHYWE4JGg; Path=/
set-cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Accept-Ranges: bytes
Cache-Control: public, max-age=0
Last-Modified: Fri, 14 Oct 2016 09:49:32 GMT
ETag: W/"48a-157c298bbe0"
Content-Type: text/html; charset=UTF-8
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Wed, 02 May 2018 21:05:19 GMT
Connection: close
2018.05.02 23:05:18 5: valloxtest: Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Wed, 09 May 2018 21:05:19 GMT
2018.05.02 23:05:18 4: valloxtest: Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Wed, 09 May 2018 21:05:19 GMT
2018.05.02 23:05:18 5: valloxtest: Set-Cookie: _csrfToken=cU4hPa7f-7JDPHEYW_OrkykbhLwzHYWE4JGg; Path=/
2018.05.02 23:05:18 4: valloxtest: Cookie: _csrfToken Wert cU4hPa7f-7JDPHEYW_OrkykbhLwzHYWE4JGg Rest Path=/
2018.05.02 23:05:18 5: valloxtest: Set-Cookie: connect.sid=s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk; Path=/; HttpOnly
2018.05.02 23:05:18 4: valloxtest: Cookie: connect.sid Wert s%3Aaw1SEJukyVH6JVUZUw0_H3BnVN-Ml1rd.KCKqXYWyIVMQvPbcdcjuOvZjxHa9BfgDv9gh5v8REPk Rest Path=/; HttpOnly
2018.05.02 23:05:18 5: valloxtest: ExtractSid called, context reading, num
2018.05.02 23:05:18 5: valloxtest: CheckAuth is checking buffer with ReAuthRegex password-input
2018.05.02 23:05:18 4: valloxtest: CheckAuth decided no authentication required
2018.05.02 23:05:18 3: valloxtest: no parsed JSON structure available
2018.05.02 23:05:18 5: valloxtest: Read starts parsing response to update with defined readings:
2018.05.02 23:05:18 3: valloxtest: Read response to update didn't match any Reading
2018.05.02 23:05:18 5: valloxtest: HandleSendQueue called, qlen = 0


Wenn ich in der Gerätedefinition %%csrf_token%% manuell durch den Wert des csrf_token ersetze funktioniert die Kommunikation und ich bekomme die entsprechenden Readings. Ich habe es aber noch nicht geschafft den csrfToken dynamisch auszulesen und dann beim Login wieder an den Server zu schicken.

Grüße,
Joschka
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Mai 2018, 07:34:27
Hallo Joshka,

Du musst den vom Server gesendeten Wert direkt aus der HTTP-Response lesen und in ein Reading holen. Dann kannst Du es später per Replacement aus dem Reading wieder in den nächsten Request packen.
Zum Extrahieren in ein Reading brauchst Du einen Namen, eine Regex etc.
Für die Regex würde ich nach _csrfToken= suchen und von dort bis zum Semikolon gehen. Das dazwischen soll in Dein Reading.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Mai 2018, 07:39:25
Hallo Joe,

verschachtelte Regexes sollten problemlos funktionieren. Du kannst Sie dann über die Nummer referenzieren oder ihnen einzeln (wo benötigt) per Attribut einen Namen geben.
Über named regex groups hatte ich schon mal nachgedacht, aber keinen wirklichen Mehrwert gesehen. Man würde nur die Namen direkt in der Regex definieren und nicht per einzelnem Attribut.
Dafür wird HTTPMOD aber noch komplexer...
Oder habe ich da was übersehen?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 03 Mai 2018, 07:45:41
Hallo Stefan,

ich finde, ehrlich gesagt, die momentane Lösung mit eigenen Namen komplexer.
Tauscht ein Wert mal die Reihenfolge, müssen oft mehrere Attribute zusammenpassend angepasst werden. Das wäre damit ales deutlich einfacher.
Wenn man den Namen direkt im Regex angeben kann und das mit einem Beispiel zeigt, glaube ich sogar dass die Anwendung einfacher für die Benutzer wird.
der Konfigurationsaufwand im Modul würde sich auch reduzieren, da ich einfach deutlich weniger Attribute benötige.
Leider kann ich nicht einschätzen, wieviel Codeänderungen das benötigt, aber da Perl ja das ja direkt unterstützt, hoffte ich schlichtweg auf einen nur kleinen
Änderungsbedarf.

sG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Mai 2018, 19:45:42
Ok, auf der Wunschliste ist es schon eine Weile drauf.
Sobald ich Zeit finde, versuche ich es einzubauen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 Mai 2018, 11:57:07
Hallo zusammen,
Leider kann ich momentan nicht helfen,  ich stecke in einer Sanierung:-)
Aber danke für Euer Valox Interesse.

Gruß
   Christian

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Mai 2018, 18:32:15
Hallo Joe,

probier doch mal die angehängte Version von HTTPMOD mit einer Regex, die named capture groups enthält.
Problematisch wird es allerdings mit den Attributen zum Formatieren / Aufbereiten einzelner Readings.
reading01-1Expr oder reading01-2Format etc. beziehen sich ja wieder auf die Reihenfolge der capture groups und genau das wolltest Du ja mit den named capture groups vermeiden ...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 05 Mai 2018, 20:37:59
Hallo Stefan, wow... Bin nur leider gerade auf Dienstreise ohne Zugang zu meinem fhem. Kannst also erst ab Mittwoch testen, sorry.

SG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Mai 2018, 11:43:51
Hier noch eine kleine Erweiterung:
Wenn z.B. reading01Regex mehrere named capture groups besitzt
und eine named capture group beispielsweise "Vorlauf" benannt ist,
dann kann man z.B. ein attribut reading01-12Name Vorlauf setzen.
Das Modul verwendet dann die andere Attribute, die mit reading01-12 beginnen für die Formatierung etc., also zum Beispiel reading01-12Format, reading01-12Map etc.

Statt der fortlaufenden Nummern von capture groups werden also die Namen der named capture groups dazu verwendet, um die passendem Attribute zu finden.
Wenn es keine passenden Attribute gibt, dann wird einfach ein Reading mit dem Namen der named capture group verwendet und keine weitere individuelle Formatierung etc. angewendet.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: clumsy am 11 Mai 2018, 08:42:29
Hallo

Nachdem ich nun nach längerem suchen nicht die info gefunden habe die ich brauhce, frage ich mal kurz hier nach: ist es möglich bei einem set[0-9]Data eine (binär)Datei anzugeben welche dann entsprechend mit einem POST request gesendet wird (für Firmware updates von modulen)?

übrigens das eingebaute enforceGoodReadingNames funktioneirt bei mir bestens und die Werte mit Leerschlägen können jetzt auch einfach weiterverwendet werden!

Danke und Gruss
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Mai 2018, 18:02:53
Hallo,

das Lesen und Senden einer Datei per set habe ich bisher nicht vorgesehen.

Gruss
  Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: clumsy am 11 Mai 2018, 18:04:37
ok, danke für die prompte Antwort... ich nehem an perl code wird dann auch nicht interpretiert, der dann das file als stdout liefern würde?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Mai 2018, 19:40:55
Hallo,

mit einer setXXIExpr ist der Set-Wert über eine Perl Expression bestimmbar ...
ob das aber mit einem kompletten Firmware-Update funktioniert?
Müsste man mal testen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 12 Mai 2018, 05:43:01
Hallo,
also ich bin begeistert. Habe einen komexeren regex damit umgesetzt und bisher scheint alles bestens zu sein.

Danke!!

SG
Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 15 Mai 2018, 16:33:16
Hallo Stefan,

habe jetzt einige HTTPMODs umgestellt und bin begeistert. Der Änderungsaufwand für komplexe REGEXs ist deutlich geringer als vorher.
Ich habe ein Device mit über 200 Readings, welches TOP funktioniert!!! Herzlichen Dank für die Umsetzung!!!

sG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Mai 2018, 19:08:06
Danke für's Testen.
Ich werde das dann nach Pfingsten einchecken.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: brembs am 20 Juni 2018, 22:05:27
Vize (Andreas) ein paar andere hier im Forum nutzen HTTPMOD um auf die Daten von SENEC PV Systemen zu zu greifen. Seit ein paar Tagen funktioniert der Login nicht mehr:

The request was rejected because the URL contained a potentially malicious String ";"

Sieht so als als bentzten sie SpringSecurity

https://github.com/spring-projects/spring-security

Was keine URL im Format /auth/oauth/authorize;jsessionid=<sessionid> mehr zulässt. Wenn ich das Modul richig verstanden habe, müsste die Umsetzung diser URL im Modul geändert werden, oder kann ich das doch über die Attribute des Device ändern?

Vielen Dank für eine Hilfestellung,

Björn
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 21 Juni 2018, 08:14:22
Nur ein kleiner Reminder: :D

Zitat von: StefanStrobel am 16 Mai 2018, 19:08:06
Danke für's Testen.
Ich werde das dann nach Pfingsten einchecken.

sG
Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 Juni 2018, 13:15:58
ist jetzt eingecheckt :-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Juli 2018, 20:08:39
Ich habe gerade nochmals eine neue Version von HTTPMOD eingecheckt.
Im wesentlichen sind zwei Attribute neu:

handleRedirects
aktiviert ein Redirect-Handling innerhalb von HTTPMOD, so dass auch Cookies zwischen Redirects verwaltet werden können.

dontRequeueAfterAuth
verhindert dass der letzte Request nach Durchführung der Login-Prozedur nochmals gesendet wird.

Den Commandref-Eintrag und das Wiki habe ich entsprechend aktualisiert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 07 Juli 2018, 12:35:35
Zitat von: StefanStrobel am 06 Juli 2018, 20:08:39
enableRedirects
aktiviert ein Redirect-Handling innerhalb von HTTPMOD, so dass auch Cookies zwischen Redirects verwaltet werden können.

Hallo Stefan,

wirklich enableRedirects? Nicht handleRedirects?  ;)

VG
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Juli 2018, 16:30:51
Du hast natürlich recht :-)
Habs gerade korrigiert.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 Juli 2018, 12:30:22
Sorry für's Cross Posten (https://forum.fhem.de/index.php/topic,89106.msg816466.html#msg816466 (https://forum.fhem.de/index.php/topic,89106.msg816466.html#msg816466)) und für den Fall, dass die Frage schon gestellt wurde:

Bei einen http get steht im httpbody der korrekte Wert, den ich auch mit wget auf die Ressource bekomme. regex kann diesen Wert aber nicht auslesen, sondern liefert immer 1 zurück, was m.E. vom http Header (HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 2 Connection: close Access-Control-Allow-Origin: *) kommt.

Kann es sein, dass die regex auf den httpheader und nicht den httpbody angewendet wird? Warum?

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 09 Juli 2018, 13:09:45
reading01Regex (?s)(.*)

mit dieser regex bekommst du alles verfügbare in dein reading.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 Juli 2018, 13:58:13
Danke für den Hinweis! Da kommt dann folgendes raus:

HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 2
Connection: close
Access-Control-Allow-Origin: *

0
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 09 Juli 2018, 14:11:54
Dann nimm
(?s)(.*)(?<wert>.)$

oder schlicht nur
(?<wert>\n)$.

Sollte beides die 0 oder 1 erfassen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 Juli 2018, 14:57:44
Danke. Leider kommt beides mal gar nix raus.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 09 Juli 2018, 15:09:56
Was ist "nix"? 0 ist auch "nix".
zeig mal ein List auf das Device.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 Juli 2018, 15:18:51
Weder 0 noch 1 noch irgendetwas.

Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   Interval   0
   LASTSEND   1531140936.16157
   MainURL   
   ModuleVersion 3.4.2 - 10.2.2018
   NAME       Coffeemaker
   NR         1513
   STATE      1
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://IP-Adresse:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://IP-Adresse/Status
   header     Content-Type: text/plain
   host       IP-Adresse
   httpbody   0

   httpheader HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 2
Connection: close
Access-Control-Allow-Origin: *
   httpversion 1.0
   hu_blocking 0
   hu_filecount 52
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /Status
   protocol   http
   redirects  0
   timeout    2
   url        http://IP-Adresse/Status
   value      0
   OLDREADINGS:
   QUEUE:
   READINGS:
     2018-07-09 14:55:36   state           1
     2018-07-09 14:53:23   state-1         HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 2
Connection: close
Access-Control-Allow-Origin: *

0
     2018-07-09 14:53:23   state-2         

   REQUEST:
     data       
     header     Content-Type: text/plain
     ignoreredirects 0
     retryCount 0
     type       get01
     url        http://IP-Adresse/Status
     value      0
   defptr:
     readingBase:
       Status     get
       state      get
       state-1    get
       state-2    get
     readingNum:
       Status     01
       state      01
       state-1    01
       state-2    01
     readingOutdated:
     readingSubNum:
       state-1    -1
       state-2    -2
     requestReadings:
       get01:
         Status     get 01
         state      get 01
         state-1    get 01-1
         state-2    get 01-2
   sslargs:
Attributes:
   get01Name  state
   get01Regex .$
   get01URL   http://IP-Adresse/Status
   getHeader1 Content-Type: text/plain
   set01Name  on
   set01NoArg 1
   set01URL   http://IP-Adresse/On
   set02Name  off
   set02NoArg 1
   set02URL   http://IP-Adresse/Off
   showBody   1
   userattr   get01CheckAllReadings:0,1 get01Name get01Poll:0,1 get01RegOpt get01Regex get01URL getHeader1 set01Name set01NoArg:0,1 set01URL set02Name set02NoArg:0,1 set02URL
   verbose    5
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 09 Juli 2018, 15:30:46
Da steht aber
get01Regex .$
, was nicht mein Beispiel war. So macht helfen nur wenig spaß. ;-).
Es entspricht auch nicht der commandref von httpmod, da die capture-group fehlt.

Hast du mal einen anderen Namen als state versucht? bin mir nicht sicher, aber früher mal ging state definitiv nicht.
nimm ein anderes reading und setzte den state dann korrekt mit stateFormat.

sG Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 Juli 2018, 15:50:54
Hatte als letztes noch eine andere regex getestet nachdem ich Deine ausprobiert hatte.

Habe die Variable nun umbenannt.

get01Name meinstatus
get01Regex (?s)(.*)(?<meinstatus>.)$

meinstatus-1
HTTP/1.1 200 OK Content-Type: text/plain Content-Length: 2 Connection: close Access-Control-Allow-Origin: * 0
2018-07-09 15:47:45
meinstatus-2
2018-07-09 15:47:45
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 Juli 2018, 09:47:59
Irgendwelche Ideen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 10 Juli 2018, 10:56:50
du suchst ja scheinbar die null am ende. ich würde mal folgendes testen:

(?s)(.)$

oder das vorletzte zeichen:
(?s)(.).$
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 10 Juli 2018, 11:40:16
Oder schlicht
.*(\d)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 Juli 2018, 14:02:48
Zitat von: frank am 10 Juli 2018, 10:56:50
(?s)(.)$
Das geht - danke!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 23 August 2018, 16:59:00
Hallo zusammen.
Ich hatte schon mal versuche zur Vallox Cloud unternommen und auch gesehen, dass es anklang gefunden hat. Vielen dank dafür.
Nachdem ich nun fhem wieder aktualisiert habe wollte ich meine Versuche nun fortsetzen. Ich denke es ist noch keinem gelungen mit dem httpmod in die Vallox Cloud zu kommen. Für mich scheind es etwas mit der Session Id (sid) zu tun zu haben, jedoch bin ich mir nicht sicher.
Mein erster Versuch war damalz zu komplex, da ich dachte ich wäre im Login weiter, jedoch war das nur eine Wechselwirkung mit den parralellen curl versuchen und das Kopieren von Schlüsseln aus dem Burp Mitschnitt.

Meine Login Config sieht wie folgt aus:


list vallox_login

Internals:
   BUSY       0
   CHANGED   
   DEF        https://cloud.vallox.com:443/login 0
   Interval   0
   LASTSEND   1535033905.89712
   LastAuthTry 2018-08-23 16:18:23
   MainURL    https://cloud.vallox.com:443/login
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       vallox_login
   NR         189
   STATE      https://cloud.vallox.com:443/: Too many redirects
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       https://cloud.vallox.com:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://cloud.vallox.com:443/
   header     X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
   host       cloud.vallox.com
   httpbody   <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.5</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
   httpheader HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:27 GMT
Set-Cookie: _csrfToken=Whh40DDR-cGLNq5hTqkOtXKcWQJRwpH0pxZo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-MfCJK8GFZUV/rfWyN777Iw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Thu, 23 Aug 2018 14:18:27 GMT
Connection: close
Transfer-Encoding: chunked
   httpversion 1.1
   hu_blocking 0
   hu_filecount 144
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /
   protocol   https
   redirects  1
   timeout    2
   url        https://cloud.vallox.com:443/
   value      0
   HTTPCookieHash:
     _csrf;:
       Name       _csrf
       Options    Path=/
       Path       
       Value      s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw
     _csrfToken;:
       Name       _csrfToken
       Options    Path=/
       Path       
       Value      Whh40DDR-cGLNq5hTqkOtXKcWQJRwpH0pxZo
     lang;:
       Name       lang
       Options    Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:27 GMT
       Path       
       Value      en
   OLDREADINGS:
   QUEUE:
   READINGS:
     2018-08-23 16:18:25   LAST_ERROR      https://cloud.vallox.com:443/: Too many redirects
   REQUEST:
     data       
     header     X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
     ignoreredirects 0
     retryCount 1
     type       get01
     url        https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412
     value      0
   defptr:
     readingBase:
       _csrfToken reading
     readingNum:
       _csrfToken 01 
     readingOutdated:
     requestReadings:
       get01:
         _csrfToken reading 01
       sslargs:
Attributes:
   enableCookies 1
   get01Name  KWL_Status
   get01URL   https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412
   getHeader1 X-Requested-With: XMLHttpRequest
   getHeader2 Accept: application/json, text/javascript, */*; q=0.01
   getHeader3 Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
   getHeader4 DNT: 1
   getHeader5 Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
   getHeader6 User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
   httpVersion 1.1
   reAuthRegex loginController
   reading01Name _csrfToken
   reading01Regex (?<=_csrfToken=).*(?=;)
   room       Heizung
   set01Name  Login
   showBody   1
   showError  1
   sid1Data   username=xxxxxxxxxx&password=xxxxxxxx
   sid1Header1 Accept: application/json, text/plain, */*
   sid1Header2 Content-Type: application/x-www-form-urlencoded; charset=UTF-8
   sid1Header3 Accept-Language: en-US,en;q=0.5
   sid1Header4 Referer: https://cloud.vallox.com/
   sid1Header5 Accept-Encoding: gzip, deflate
   sid1Header6 Connection: close
   sid1Header7 User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
   sid1Header8 Cookie: connect.sid=$sid
   sid1URL    https://cloud.vallox.com/login
   stateFormat LAST_ERROR
   timeout    2
   userattr   get01CheckAllReadings:0,1 get01Data get01Header3 get01Name get01URL getHeader1 getHeader2 getHeader3 getHeader4 getHeader5 getHeader6 getHeader7 reading01Name reading01Regex reading02Name reading02Regex set01Data set01Header1 set01Name set01URL setHeader1 setHeader2 setHeader3 setHeader4 setHeader5 setHeader6 setURL sid1Data sid1Header1 sid1Header2 sid1Header3 sid1Header4 sid1Header5 sid1Header6 sid1Header7 sid1Header8 sid1URL
   verbose    5



Und hier kommt das kommentierte Log mit Verbose 5


2018.08.23 16:18:22 5: vallox_login: get called with KWL_Status
2018.08.23 16:18:22 5: vallox_login: get found option KWL_Status in attribute get01Name
2018.08.23 16:18:22 4: vallox_login: get will now request KWL_Status, no optional value
2018.08.23 16:18:22 4: vallox_login: AddToQueue adds get01, initial queue len: 0
2018.08.23 16:18:23 5: vallox_login: AddToQueue adds type get01 to URL https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, no data, header X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0, retry 0
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue called, qlen = 1
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie _csrf with path  and Value s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY (key _csrf;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie _csrfToken with path  and Value j25GUl8k-rNKefC3pXqs2FdWQXklp7S6s_Ws (key _csrfToken;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxx)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is adding Cookie header: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=j25GUl8k-rNKefC3pXqs2FdWQXklp7S6s_Ws; lang=en
2018.08.23 16:18:23 4: vallox_login: HandleSendQueue sends request type get01 to URL https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, No Data,
header: X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=j25GUl8k-rNKefC3pXqs2FdWQXklp7S6s_Ws; lang=en
timeout 2
2018.08.23 16:18:23 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
2018.08.23 16:18:23 5: HttpUtils request header:
GET /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412 HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=j25GUl8k-rNKefC3pXqs2FdWQXklp7S6s_Ws; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.08.23 16:18:23 4: https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxx?cb=1490179044412: HTTP response code 302
2018.08.23 16:18:23 4: HttpUtils https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:23 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:23 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=j25GUl8k-rNKefC3pXqs2FdWQXklp7S6s_Ws; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.08.23 16:18:23 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.08.23 16:18:23 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.08.23 16:18:23 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:24 GMT
Set-Cookie: _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-MfCJK8GFZUV/rfWyN777Iw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Thu, 23 Aug 2018 14:18:24 GMT
Connection: close
Transfer-Encoding: chunked
2018.08.23 16:18:23 4: vallox_login: Read callback: request type was get01 retry 0,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.5</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.08.23 16:18:23 5: vallox_login: GetCookies is looking for Cookies
2018.08.23 16:18:23 4: vallox_login: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:24 GMT
2018.08.23 16:18:23 4: vallox_login: GetCookies parsed Cookie: _csrfToken Wert IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM Rest Path=/
2018.08.23 16:18:23 5: vallox_login: ExtractSid called, context get, num 01
2018.08.23 16:18:23 5: vallox_login: CheckAuth is checking buffer with ReAuthRegex loginController
2018.08.23 16:18:23 4: vallox_login: CheckAuth decided new authentication required
2018.08.23 16:18:23 4: vallox_login: Auth called with Steps: 1
2018.08.23 16:18:23 4: vallox_login: AddToQueue adds auth1, initial queue len: 0, prio
2018.08.23 16:18:23 5: vallox_login: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=xxxxxxxxx&password=xxxxxxxx, header Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid, retry 0
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue called, qlen = 1
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie _csrf with path  and Value s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY (key _csrf;, destination path is /login)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie _csrfToken with path  and Value IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM (key _csrfToken;, destination path is /login)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /login)
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue is adding Cookie header: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
2018.08.23 16:18:23 4: vallox_login: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=xxxxxxxxxx&password=xxxxxxx,
header: Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
timeout 2
2018.08.23 16:18:23 5: HttpUtils url=https://cloud.vallox.com/login
2018.08.23 16:18:23 4: vallox_login: AddToQueue adds get01, initial queue len: 0
2018.08.23 16:18:23 5: vallox_login: AddToQueue adds type get01 to URL https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx, no data, header X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0, retry 1
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue called, qlen = 1
2018.08.23 16:18:23 5: vallox_login: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.08.23 16:18:23 4: vallox_login: CheckAuth requeued request get01 after auth, retryCount 0 ...
2018.08.23 16:18:23 5: HttpUtils request header:
POST /login HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:23 4: https://cloud.vallox.com/login: HTTP response code 302
2018.08.23 16:18:23 4: HttpUtils https://cloud.vallox.com/login: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:23 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils request header:
POST / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:24 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.08.23 16:18:24 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils request header:
POST / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:24 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.08.23 16:18:24 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils request header:
POST / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:24 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.08.23 16:18:24 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils request header:
POST / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:24 5: vallox_login: HandleSendQueue called, qlen = 1
2018.08.23 16:18:24 5: vallox_login: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.08.23 16:18:24 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.08.23 16:18:24 4: HttpUtils https://cloud.vallox.com:443/: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:24 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:25 5: HttpUtils request header:
POST / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
Accept: application/json, text/plain, */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept-Language: en-US,en;q=0.5
Referer: https://cloud.vallox.com/
Accept-Encoding: gzip, deflate
Connection: close
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20180823 Firefox/61.0
Cookie: connect.sid=$sid
Cookie: _csrf=s%3AYE1XRipt9qknY90RUoTUUURG.5Njyi%2F9Lb9Rffr4xJMyWC8eSgS5NC%2FsE0sjOngUndfY; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 45

2018.08.23 16:18:25 4: https://cloud.vallox.com:443/: HTTP response code 302
2018.08.23 16:18:25 3: vallox_login: Read callback: Error: https://cloud.vallox.com:443/: Too many redirects
2018.08.23 16:18:25 4: vallox_login: Read callback: request type was auth1 retry 0, body empty
2018.08.23 16:18:25 5: vallox_login: GetCookies is looking for Cookies
2018.08.23 16:18:25 4: vallox_login: GetCookies parsed Cookie: _csrf Wert s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw Rest Path=/
2018.08.23 16:18:25 5: vallox_login: ExtractSid called, context sid, num 1
2018.08.23 16:18:25 5: vallox_login: HandleSendQueue called, qlen = 1
2018.08.23 16:18:25 5: vallox_login: HandleSendQueue is using Cookie _csrf with path  and Value s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw (key _csrf;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412)
2018.08.23 16:18:25 5: vallox_login: HandleSendQueue is using Cookie _csrfToken with path  and Value IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM (key _csrfToken;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
2018.08.23 16:18:25 5: vallox_login: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412)
2018.08.23 16:18:25 5: vallox_login: HandleSendQueue is adding Cookie header: _csrf=s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
2018.08.23 16:18:25 4: vallox_login: HandleSendQueue sends request type get01 to URL https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxx, No Data,
header: X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
timeout 2
2018.08.23 16:18:25 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412
2018.08.23 16:18:26 5: HttpUtils request header:
GET /api/devicestate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.08.23 16:18:26 4: https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxxxxxxxxxxxx?cb=1490179044412: HTTP response code 302
2018.08.23 16:18:26 4: HttpUtils https://cloud.vallox.com:443/api/devicestate/xxxxxxxxxxxx?cb=1490179044412: Redirect to https://cloud.vallox.com:443/
2018.08.23 16:18:26 5: HttpUtils url=https://cloud.vallox.com:443/
2018.08.23 16:18:26 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
Accept-Encoding: gzip,deflate
Connection: Close
X-Requested-With: XMLHttpRequest
Accept: application/json, text/javascript, */*; q=0.01
Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DNT: 1
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Cookie: _csrf=s%3AnnYssVIRgI7_nbneiBGCSSOa.xJkfjsNPjgn3f3As%2BS3vuEkZVRDUYZD3MFBVD6UlNdw; _csrfToken=IoLa0EjD-geAZuU_nQQjtXcgOYdJL1f9mUvM; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.08.23 16:18:26 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.08.23 16:18:26 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.08.23 16:18:26 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:27 GMT
Set-Cookie: _csrfToken=Whh40DDR-cGLNq5hTqkOtXKcWQJRwpH0pxZo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-MfCJK8GFZUV/rfWyN777Iw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Thu, 23 Aug 2018 14:18:27 GMT
Connection: close
Transfer-Encoding: chunked
2018.08.23 16:18:26 4: vallox_login: Read callback: request type was get01 retry 1,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.5</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.08.23 16:18:26 5: vallox_login: GetCookies is looking for Cookies
2018.08.23 16:18:26 4: vallox_login: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 14:18:27 GMT
2018.08.23 16:18:26 4: vallox_login: GetCookies parsed Cookie: _csrfToken Wert Whh40DDR-cGLNq5hTqkOtXKcWQJRwpH0pxZo Rest Path=/
2018.08.23 16:18:26 5: vallox_login: ExtractSid called, context get, num 01
2018.08.23 16:18:26 5: vallox_login: CheckAuth is checking buffer with ReAuthRegex loginController
2018.08.23 16:18:26 4: vallox_login: CheckAuth decided new authentication required
2018.08.23 16:18:26 4: vallox_login: Authentication still required but no retries left - did last authentication fail?
2018.08.23 16:18:26 5: vallox_login: ExtractReading for context get, num 01 - no individual parse definition
2018.08.23 16:18:26 5: vallox_login: Read starts parsing response to get01 with defined readings: 01
2018.08.23 16:18:26 5: vallox_login: ExtractReading _csrfToken with regex /(?<=_csrfToken=).*(?=;/...
2018.08.23 16:18:26 5: vallox_login: ExtractReading _csrfToken did not match
2018.08.23 16:18:26 3: vallox_login: Read response to get01 didn't match any Reading
2018.08.23 16:18:26 5: vallox_login: HandleSendQueue called, qlen = 0




Was mir nun nicht so klar ist, ist das Handschake bei der Anmeldung mit den Token und der sid. In der Config habe ich versucht die sid in "sid1Header8 Cookie: connect.sid=$sid" einzusetzen, wie ich es in Burp mitgeschnitten haben. Jedoch wird $sid nicht ersetzt.

Ein weiterer Test ist ein reading für ein Token:

reading01Name _csrfToken
reading01Regex (?<=_csrfToken=).*(?=;)

Das wird allerdings nicht gefunden und ich weiß nicht ob man auch aus dem Header lesen kann?
Die Regex habe ich online getestet und liefert das gewünschte Ergebnis.

In einem parrallelen Test mit curl, aus Burp generiert, habe ich bereits herausbekommen, dass die Meldungen im httpbody erscheinen, sobald das Login fehlschlägt. Dies ist der Fall, sobald die sid im curl Aufruf entfern wurde. Beim Test habe ich natürlich immer stückweise Token und sid entfernt, bis es nicht mehr ging :-)

Ein Beispiel:

gut

curl -i -s -k  -X $'POST'     -H $'Host: cloud.vallox.com' -H $'User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:52.0) Gecko/20100101 Firefox/52.0' -H $'Accept: application/json, text/plain, */*' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H $'X-XSRF-TOKEN: V9h5z3ND-n2W0OxnxsS1mCDEp4I-DnJvvN0w' -H $'Referer: https://cloud.vallox.com/' -H $'Content-Length: 45' -H $'Cookie: lang=de; _csrf=s%3ARKngiocWzDWFWVUUxHB3bN9S.TKzzSSHJTHy2%2B0aeDT9VpgidMbnAu9QlCYOfsHo%2F4Q0; _csrfToken=V9h5z3ND-n2W0OxnxsS1mCDEp4I-DnJvvN0w; connect.sid=s%3AOIwxYChbyViDwoNZpmLxOwTVAliX5LWq.ywEegvaXmOyGuRwpgGZqqUIsQQqqH9gxDsxVOgeg0k4' -H $'Connection: close'    --data-binary $'username=xxxxxxxxxx&password=xxxxxxx'     $'https://cloud.vallox.com/login'


HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Thu, 30 Aug 2018 15:13:20 GMT
set-cookie: _csrfToken=Upc1ygWY-N5qS_FSM5kv-IsFsw21DHx9BnI4; Path=/
set-cookie: connect.sid=s%3Awrx0PXEAcykcPGEr-p5JoSOV0C1hmKwB.QajtZCpLK8bC7seDzHx47StdOmiyVCBP7k1SbfBIxP4; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"
Date: Thu, 23 Aug 2018 15:13:20 GMT
Connection: close

{"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}



schlecht

curl -i -s -k  -X $'POST'     -H $'Host: cloud.vallox.com' -H $'User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:52.0) Gecko/20100101 Firefox/52.0' -H $'Accept: application/json, text/plain, */*' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'Content-Type: application/x-www-form-urlencoded; charset=UTF-8' -H $'Referer: https://cloud.vallox.com/' -H $'Content-Length: 45' -H $'Connection: close'    --data-binary $'username=xxxxxxxxx&password=xxxxxxxxxxxx'     $'https://cloud.vallox.com/login'


HTTP/1.1 302 Found
Vary: X-HTTP-Method-Override, Accept, Accept-Encoding
set-cookie: _csrf=s%3AquIQ0ak4KrP1nBqEs54Ac7iV.PnvU6spHm5bj6rJuJd%2BxTXiDDYDh8GIZS6Y8XNlYgps; Path=/
Location: /
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Thu, 23 Aug 2018 15:09:34 GMT
Connection: close

Found. Redirecting to /




Nun meine Bitte an Euch mir reichlich Futter zu schicken. Jede Idee ist willkommen.

Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 August 2018, 23:48:35
Hallo,

Hast Du diesen Thread verfolgt?
https://forum.fhem.de/index.php/topic,68452.45.html

Auch bei Dir enthält die erste Response einen Refirect.
Mit Deiner Konfiguration verfolgt HttpUtils den sofort und vergisst dabei die Cookies.

Mit enableRedirects übernimmt HTTPMOD die Verfolgung der Redirects...

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 27 August 2018, 16:56:07
Hallo Stefan,
vielen dank für die schnelle Rückmeldung.

Ich habe noch mal vereinfacht neu angefangen. Den Thread hatte ich auch schon gelesen und handleRedirects auf 1 gesetzt.

Um nichts an Meldungen zu verpassen steht nun:
enableCookies 1
handleRedirects 1
showBody   1
showError  1
verbose    5

Laut Burp ist es HTTP 1.1 und mit curl habe ich gesehen, dass auch chunked responces kommen. Doch das kommt erst nach dem login :-)

Habe ich denn die aktuellste HTTPMOD Version? 3.5.1 - 5.7.2018



Internals:
   BUSY       0
   CFGFN     
   CHANGED   
   DEF        https://cloud.vallox.com/ 0
   Interval   0
   LASTSEND   1535372037.72493
   LastAuthTry 2018-08-27 14:13:56
   MainURL    https://cloud.vallox.com/
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       vallox_login
   NR         7286
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       https://cloud.vallox.com:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://cloud.vallox.com:443/
   header     Cookie: _csrf=s%3AOaUxgpbve2YbFScXdRtCaIdu.NohThlo2%2B2PhvrTi7NZEJ1ZUCxipzLxYRZ4yaImJlfc; _csrfToken=MBNGnJD7-yudtMHhGAOoZoVyYqZCcsCi8MDk; connect.sid=s%3Av8td9QGetunZ7pKbnHa5SvM4cxyGYVwb.M8OyQKPntIloz9ixO2nqDvFQha8oE1UykbLyln9Okjw; lang=en
   host       cloud.vallox.com

   httpbody   <!DOCTYPE html>

snip   hier habe ich einiges weg gelassen

<div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section">

snip     im fhem erkennt das HTTPMOD anhand des "loginController" mit "reAuthRegex loginController" das ein Login notwendig ist.

</body></html>



   httpheader HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Mon, 03 Sep 2018 12:13:58 GMT
Set-Cookie: _csrfToken=deiJaiUR-vCAzfzZEFsahusLCYa3lcQqfxVs; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-MfCJK8GFZUV/rfWyN777Iw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Mon, 27 Aug 2018 12:13:58 GMT
Connection: close
Transfer-Encoding: chunked
   httpversion 1.1
   hu_blocking 0
   hu_filecount 23
   hu_port    443
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /
   protocol   https
   redirects  0
   timeout    2
   url        https://cloud.vallox.com:443/
   value      0
   HTTPCookieHash:
     _csrf;:
       Name       _csrf
       Options    Path=/
       Path       
       Value      s%3AOaUxgpbve2YbFScXdRtCaIdu.NohThlo2%2B2PhvrTi7NZEJ1ZUCxipzLxYRZ4yaImJlfc
     _csrfToken;:
       Name       _csrfToken
       Options    Path=/
       Path       
       Value      deiJaiUR-vCAzfzZEFsahusLCYa3lcQqfxVs
     connect.sid;:
       Name       connect.sid
       Options    Path=/; HttpOnly
       Path       
       Value      s%3Av8td9QGetunZ7pKbnHa5SvM4cxyGYVwb.M8OyQKPntIloz9ixO2nqDvFQha8oE1UykbLyln9Okjw
     lang;:
       Name       lang
       Options    Max-Age=604800; Path=/; Expires=Mon, 03 Sep 2018 12:13:58 GMT
       Path       
       Value      en
   QUEUE:
   READINGS:
     2018-08-27 14:07:48   LAST_ERROR     
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 1
     type       get01
     url        https://cloud.vallox.com:443/
     value      0
   sslargs:
Attributes:
   enableCookies 1
   get01Name  Mainpage
   get01URL   https://cloud.vallox.com/account
   handleRedirects 1
   httpVersion 1.1
   reAuthRegex loginController
   room       Heizung
   showBody   1
   showError  1
   sid1Data   username=xxxxxx&password=xxxxxx
   sid1Header1 Referer: https://cloud.vallox.com/
   sid1URL    https://cloud.vallox.com/login
   userattr   get01Header1 get01Header2 get01Name get01URL sid1Data sid1Header1 sid1URL
   verbose    5


Nun der Ablauf:

Mit "get vallox_login Mainpage" wird ein get request aufgebaut:
   get01Name  Mainpage
   get01URL   https://cloud.vallox.com/account


GET /account HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Cookie: _csrf=s%3AOaUxgpbve2YbFScXdRtCaIdu.NohThlo2%2B2PhvrTi7NZEJ1ZUCxipzLxYRZ4yaImJlfc; _csrfToken=WEiHEClx-jySsHTrb7_gLagMGRp6hltHofNM; connect.sid=s%3AROx66EIZo5KeIWI2PYpjrJ-EUo7z9xMC.hu%2BCuZn%2B20rwWE%2F2YNGPeV0TOSllc5NLLu0si2T0Qqw; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded


Okay, hierbei wird auch das connect.sid was vom Server (von vorherigen Aufrufen) gekommen ist verwendet.

Laut Burp kommt nun folgendes zurück:


HTTP/1.1 304 Not Modified
Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Mon, 03 Sep 2018 14:31:06 GMT
Set-Cookie: _csrfToken=DS4bB4I0-cmHBs_oehsWGyPHaYZB8Tm_ZmpQ; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
ETag: W/"1094-IK6HSXKdy3yHfjMuTX/Riw"            <<<<<<<<<<<<<<<<
Date: Mon, 27 Aug 2018 14:31:06 GMT
Connection: close


Dann soll folgendes geschickt werden:


POST /login HTTP/1.1
Host: cloud.vallox.com
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: application/json, text/plain, */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: eyfC6EWh-Jq2ABTTh-qES4hoC9GZOtrEIpKE               <<<<<<<<<<<<<<<<
Referer: https://cloud.vallox.com/
Content-Length: 45
Cookie: lang=de; _csrf=s%3AuWR2FejFc51ft0qA6plqHlGa.56%2FCjEQDRe2t9O62NuIOTCGU6%2FnNfkWD5Wz1eESaxu0; _csrfToken=eyfC6EWh-Jq2ABTTh-qES4hoC9GZOtrEIpKE; connect.sid=s%3Aewmh0nPBNx7Iz6FGZjosv32JzC9s9J4g.vbxzAe8Buvrm01XXgFTLMywVjFHEXRcW6siXC4dCHIM
Connection: close

username=xxxxxxxx&password=xxxxxx


Der web Server sagt alles gut :-) und die connect.sid bleibt die selbe.


HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Mon, 03 Sep 2018 14:32:49 GMT
set-cookie: _csrfToken=9PgKgdeQ-b4MrmBWgH53UaQmZRgTgtBlbwfU; Path=/
set-cookie: connect.sid=s%3Aewmh0nPBNx7Iz6FGZjosv32JzC9s9J4g.vbxzAe8Buvrm01XXgFTLMywVjFHEXRcW6siXC4dCHIM; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"              <<<<<<<<<<<<<<<<
Date: Mon, 27 Aug 2018 14:32:50 GMT
Connection: close

{[b]"success":true,[/b]"errors":[],"errfor":{},"message":"","nexturl":"/account"}


Danach erfolgt wieder ein get request, diesmal auf /account:


GET /account HTTP/1.1
Host: cloud.vallox.com
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,text/csv;q=0.9
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Referer: https://cloud.vallox.com/
Cookie: lang=de; _csrf=s%3AuWR2FejFc51ft0qA6plqHlGa.56%2FCjEQDRe2t9O62NuIOTCGU6%2FnNfkWD5Wz1eESaxu0; _csrfToken=TmD2GWze-eFVcnFD1vsLbwlN2ha9HoguarlQ; connect.sid=s%3Aewmh0nPBNx7Iz6FGZjosv32JzC9s9J4g.vbxzAe8Buvrm01XXgFTLMywVjFHEXRcW6siXC4dCHIM
Connection: close
Upgrade-Insecure-Requests: 1
If-None-Match: W/"17ff-MGoVRRM3HoEkqWe9T+bqaA"             <<<<<<<<<<<<<<<<


Und die Antwort:


HTTP/1.1 304 Not Modified
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Mon, 03 Sep 2018 14:32:50 GMT
set-cookie: _csrfToken=gumr2doN-EouALCxY2HcoYaouHhnvenuLIR8; Path=/
set-cookie: connect.sid=s%3Aewmh0nPBNx7Iz6FGZjosv32JzC9s9J4g.vbxzAe8Buvrm01XXgFTLMywVjFHEXRcW6siXC4dCHIM; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
ETag: W/"17ff-MGoVRRM3HoEkqWe9T+bqaA"            <<<<<<<<<<<<<<<<
Date: Mon, 27 Aug 2018 14:32:50 GMT
Connection: close


Und so geht es dann weiter. An dieser Stelle kann ich dann erst nach dem Login schauen was man braucht.

Die erste Hürde ist nach wie vor das login. Muss ich für die ETag Header (<<<<<<<<<<<<<<<<) noch etwas specielles machen?
die Cookies werden mit den gestetzten attributen nun anscheinend richtig behandelt und weitergeleitet.

Wie kann ich nun den obigen Burp Trace umsetzen?

Ich bin dann doch etwas überfordert mit den korrekten Einstellungen ;-)

Viele Grüße
      Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 August 2018, 17:50:51
Hallo Christian,

ich würde zunächst in Burp versuchen den Vorgang nachzubilden. Dazu die relevanten Requests in den Repeater schicken, das Cookie-Handling aktivieren und dann die Requests Schritt für Schritt nochmal schicken. So kannst Du prüfen, wie der Ablauf reproduzierbar ist.
Wenn das einmal geklappt hat, würde ich im Repeater die Requests schrittweise vereinfachen um herauszufinden, welche Header überhaupt nötig sind.
Ich vermute, dass die ETags keine Rolle spielen und entsprechend auch die If-None-Match-Header.

Was Du aber auf jeden Fall abbilden musst, sind die CSRF-Tokens. die würde ich per Regex in Reading auslesen und dann mit Replacements wieder in den nächsten Request einbauen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Camouflage am 20 September 2018, 13:11:33
Hay ich habe eine Frage.

Stand
define test httpmod google.de 600
define testchange notify test set irgendwas

Was ich brauche
define test_status dummy
attr test_status Webcmd on:off

Wie kann ich jetzt ein notify erstellen der test(httpmod) erneut ausführt un den Intervall erneueret
Heist wenn test_status angeschaltet wird; führt er test nochmal aus und führt somit (set irgendwas) aus 
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 03 Oktober 2018, 07:44:37
Guten Morgen Stefan,
ich habe schon länger HTTPMOD im Einsatz um werte meiner "Bayernlüfter" abzufragen...
Nun wollte ich mal einen Plot aus den werten machen - hier sind meldungen im Log aufgeschlagen welche auf "isnt numeric in...SVGPlot" hinweisen.
Ok, ich dachte mir ich füge im HTTPMOD ein reading04Format %.1f hinzu und alles ist gut - das problem mit dem isnt numeric habe ich damit aaber leider nur verschoben.
im Log habe ich nun
Zitat2018.10.03 07:35:44 1: PERL WARNING: Argument "N/A " isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:44 1: PERL WARNING: Argument "49,7" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:44 1: PERL WARNING: Argument "37,3" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:44 1: PERL WARNING: Argument "17,0" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:00 1: PERL WARNING: Argument "92,3" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:00 1: PERL WARNING: Argument "47,0" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:00 1: PERL WARNING: Argument "36,3" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:35:00 1: PERL WARNING: Argument "15,3" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:34:16 1: PERL WARNING: Argument "90,1" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:34:16 1: PERL WARNING: Argument "15,0" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:34:14 1: PERL WARNING: Argument "21,4" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:33:33 1: PERL WARNING: Argument "90,0" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:33:33 1: PERL WARNING: Argument "35,1" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:33:28 1: PERL WARNING: Argument "16,9" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:32:50 1: PERL WARNING: Argument "89,9" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:32:50 1: PERL WARNING: Argument "35,2" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:32:50 1: PERL WARNING: Argument "15,1" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:32:07 1: PERL WARNING: Argument "90,7" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:32:07 1: PERL WARNING: Argument "21,8" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:31:25 1: PERL WARNING: Argument "89,8" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:31:25 1: PERL WARNING: Argument "47,1" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:31:25 1: PERL WARNING: Argument "21,1" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:31:25 1: PERL WARNING: Argument "15,2" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:30:42 1: PERL WARNING: Argument "21,2" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:29:58 1: PERL WARNING: Argument "21,3" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.
2018.10.03 07:29:15 1: PERL WARNING: Argument "15,4" isn't numeric in sprintf at ./FHEM/98_HTTPMOD.pm line 1746.

Hast Du eine Idee was ich hier tun kann?

PS: ich habe noch ein list gemacht :

Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.1.151/ 45
   Interval   45
   LASTSEND   1538545347.92591
   MainURL    http://192.168.1.151/
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       LueftungBadOG
   NR         113
   STATE       01
   TRIGGERTIME 1538545392.92535
   TRIGGERTIME_FMT 2018-10-03 07:43:12
   TYPE       HTTPMOD
   addr       http://192.168.1.151:80
   auth       0
   buf        HTTP/1.1 200 OK
Content-Type: text/html

<html><head>
<meta http-equiv="refresh" content="60; URL=http://192.168.1.151"><title>Onlineschema Bayernluft</title>
<style type='text/css'>
#graphic {text-align: left; vertical-align: top; position: relative; width: 800px; height: 600px; margin-right: auto; margin-left: auto;}
#bezeichnung {top: 1px; left: 210px;}
#hilfe {top: 1px; left: 90px;}
#rssi {top: 665px; left: 340px;}
#zeit {top: 30px; left: 210px;}
#frischluft_temp {top: 333px; left: 500px;}
#abluft_temp {top: 303px; left:30px;}
#label_wrg {top: 320px; left: 275px;}
#wrg {top: 350px; left: 273px;}
#label_transport {top: 473px; left: 218px;}
#feuchtetransport {top: 503px; left: 250px;}
#abluft_feuchte_rel {top: 333px; left: 30px;}
#abluft_feuchte_abs {top: 363px; left: 30px;}
#zuluft_temp {top: 490px; left: 30px;}
#zuluft_feuchte_rel {top: 520px; left: 30px;}
#zuluft_feuchte_abs {top: 550px; left:30px;}
#abluft_motorstufe {top: 233px; left: 100px;}
#frischluft_motorstufe {top: 233px; left: 390px;}
#buttons {top: 650px; left: 350px;}
#fs_motor {top: 125px; left: 293px;}
#label_fs_motor {top: 100px; left: 292px;}
#select_speed {top: 255px; left: 251px;}
.style1 {font-family: Arial; font-size: 20px; text-align: left; font-style: normal; font-weight: bold; color: #000000; position: absolute;}
.style2 {font-family: Arial; font-size: 13px; text-align: left; font-style: normal; font-weight: bold; color: #000000; position: absolute;}
.style3 {font-family: Arial; font-size: 10px; text-align: right; font-style: normal; font-weight: bold; color: #2076CD; position: absolute;}
.style4 {font-family: Arial; font-size: 13px; text-align: left; font-style: normal; font-weight: bold; color: #FFFFFF; position: absolute;}
</style>
</head>
<body {font-size: 14px; font-family: Verdana, Arial, Helvetica, sans-serif; background-repeat: no-repeat;}>
<div id='graphic'>
<img src='https://www.bayernluft.de/live/test_schema_blauverlauf.jpg' border='0' width="662" height="800" usemap="#Geraet">

<map name="Geraet">
  <area shape="rect" coords="255,206,293,244"
        href="http://192.168.1.151?button=power"
        title="Power">

  <area shape="rect" coords="312,206,349,244"
        href="http://192.168.1.151?button=timer"
        title="Timer">

  <area shape="rect" coords="40,20,60,50"
        href="https://www.bayernluft.de/de/frame.cgi?page=live_hilfe"
        target="_blank"
        title="Hilfe">

  <area shape="rect" coords="80,20,110,50"
        title="Einstellungen"
        href="https://www.bayernluft.de/de/wlan_setting.cgi/?IP=192.168.1.151&MAC=A020A62A96DF&NAME=">

</map>
<div class='style3' id='rssi'>[-69 dBm] [1744000A] [20171006]</div>
<div class='style1' id='hilfe'><a href="https://www.bayernluft.de/de/frame.cgi?page=live_hilfe" target="_blank"></a></div>
<div class='style1' id='bezeichnung'></div>
<div class='style1' id='zeit'>03.10.2018 - 08:01:13</div>
<div class='style1' id='label_fs_motor'>FS</div>
<div class='style1' id='fs_motor'>00</div>
<div class='style1' id='abluft_temp'>21,1 &deg;C</div>
<div class='style1' id='label_wrg'>WRG</div>
<div class='style1' id='wrg'>N/A %</div>
<div class='style1' id='label_transport'>Feuchtetransport:</div>
<div class='style1' id='feuchtetransport'>-290 g/24h</div>
<div class='style1' id='abluft_feuchte_rel'>49,4 % rF</div>
<div class='style1' id='abluft_feuchte_abs'>9,1 g/m³</div>
<div class='style1' id='zuluft_temp'>21,2 &deg;C</div>
<div class='style1' id='zuluft_feuchte_rel'>36,0 % rF</div>
<div class='style1' id='zuluft_feuchte_abs'>6,7 g/m³</div>
<div class='style1' id='frischluft_temp'>16,4 &deg;C</div>
<form method="get" action="http://192.168.1.151/?speed=">
<div class='style1' id='select_speed'>
<font size="3">Stufe: <select size="1" name="speed" onchange="this.form.submit()">
<option selected value="-1">Select</option>
<option value="0">Auto</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select></font>
</div>
</form>
<div class='style1' id='abluft_motorstufe'>Abluft: 01</div>
<div class='style1' id='frischluft_motorstufe'>Frischluft: 01</div></div>
</div>
</body>
</html>
   code       200
   data       
   displayurl http://192.168.1.151/
   header     
   host       192.168.1.151
   httpdatalen -2
   httpversion 1.0
   ignoreredirects 0
   loglevel   4
   path       /
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.1.151/
   value      0
   Helper:
     DBLOG:
       AbluftFeuchtigkeit:
         DbLog:
           TIME       1538544944.16679
           VALUE      49.0
       AbluftStufe:
         DbLog:
           TIME       1538457667.87548
           VALUE       01
       AbluftTemperatur:
         DbLog:
           TIME       1538544944.16679
           VALUE      21.0
       AussenLuftTemperatur:
         DbLog:
           TIME       1538544989.28686
           VALUE      16.0
       WRG:
         DbLog:
           TIME       1538544944.16679
           VALUE      0.0
       ZuluftFeuchtigkeit:
         DbLog:
           TIME       1538545033.87104
           VALUE      36.0
       ZuluftStufe:
         DbLog:
           TIME       1538457667.87548
           VALUE       01
       ZuluftTemperatur:
         DbLog:
           TIME       1538544854.05686
           VALUE      21.0
   QUEUE:
   READINGS:
     2018-10-03 07:41:44   AbluftFeuchtigkeit 49.0
     2018-10-03 07:41:44   AbluftStufe      01
     2018-10-03 07:41:44   AbluftTemperatur 21.0
     2018-10-03 07:41:44   AussenLuftTemperatur 16.0
     2018-10-03 07:41:44   WRG             0.0
     2018-10-03 07:41:44   ZuluftFeuchtigkeit 36.0
     2018-10-03 07:41:44   ZuluftStufe      01
     2018-10-03 07:41:44   ZuluftTemperatur 21.0
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.1.151/
     value      0
   defptr:
     readingBase:
       AbluftFeuchtigkeit reading
       AbluftStufe reading
       AbluftTemperatur reading
       AussenLuftTemperatur reading
       WRG        reading
       ZuluftFeuchtigkeit reading
       ZuluftStufe reading
       ZuluftTemperatur reading
     readingNum:
       AbluftFeuchtigkeit 07
       AbluftStufe 01
       AbluftTemperatur 06
       AussenLuftTemperatur 03
       WRG        08
       ZuluftFeuchtigkeit 05
       ZuluftStufe 02
       ZuluftTemperatur 04
     readingOutdated:
     requestReadings:
       update:
         AbluftFeuchtigkeit reading 07
         AbluftStufe reading 01
         AbluftTemperatur reading 06
         AussenLuftTemperatur reading 03
         WRG        reading 08
         ZuluftFeuchtigkeit reading 05
         ZuluftStufe reading 02
         ZuluftTemperatur reading 04
   helper:
     bm:
       HTTPMOD_Attr:
         cnt        7
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        03.10. 07:33:27
         max        0.00397586822509766
         tot        0.0232529640197754
         mAr:
           set
           LueftungBadOG
           reading03Format
           %.1f
       HTTPMOD_Get:
         cnt        8
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        03.10. 07:35:08
         max        6.79492950439453e-05
         tot        0.000486850738525391
         mAr:
           HASH(0x3b51278)
           LueftungBadOG
           ?
       HTTPMOD_Set:
         cnt        248
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.10. 05:30:03
         max        0.00293302536010742
         tot        0.0786707401275635
         mAr:
           HASH(0x3b51278)
           LueftungBadOG
           SpeedSelect
           3
   sslargs:
Attributes:
   enableControlSet 1
   event-on-change-reading .*
   reading01Name AbluftStufe
   reading01Regex >Abluft:(...)<
   reading02Name ZuluftStufe
   reading02Regex >Frischluft:(...)<
   reading03Format %.1f
   reading03Name AussenLuftTemperatur
   reading03Regex id='frischluft_temp'>(....)
   reading04Format %.1f
   reading04Name ZuluftTemperatur
   reading04Regex id='zuluft_temp'>(....)
   reading05Format %.1f
   reading05Name ZuluftFeuchtigkeit
   reading05Regex id='zuluft_feuchte_rel'>(....)
   reading06Format %.1f
   reading06Name AbluftTemperatur
   reading06Regex id='abluft_temp'>(....)
   reading07Format %.1f
   reading07Name AbluftFeuchtigkeit
   reading07Regex id='abluft_feuchte_rel'>(....)
   reading08Format %.1f
   reading08Name WRG
   reading08Regex id='wrg'>(....)
   room       95-Lüftung
   set01Name  Power
   set01NoArg 1
   set01URL   http://192.168.1.151/?button=power
   set02Hint  1,2,3,4,5,6,7,8,9,10
   set02Max   10
   set02Min   1
   set02Name  SpeedSelect
   set02URL   http://192.168.1.151/?speed=$val
   set03Name  Automatik
   set03NoArg 1
   set03URL   http://192.168.1.151/?speed=-1
   stateFormat AbluftStufe
   userattr   reading01Name reading01Regex reading02Name reading02Regex reading03Format reading03Name reading03Regex reading04Format reading04Name reading04Regex reading05Format reading05Name reading05Regex reading06Format reading06Name reading06Regex reading07Format reading07Name reading07Regex reading08Format reading08Name reading08Regex set01Name set01NoArg:0,1 set01URL set02Hint set02Max set02Min set02Name set02URL set03Name set03NoArg:0,1 set03URL
   verbose    2
   webCmd     Power
   widgetOverride userattr:textField-long
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Oktober 2018, 19:47:05
Hallo,

ich würde die Regexes für die Readings so ändern, dass nur Zahlen mit . oder , erlaubt sind. N/A oder ähnliche Strings sollten dann nicht mehr matchen und ignoriert werden. Mit einem (get|reading)[0-9]*OExpr Attribut würde ich dann die Kommas in Punkte umwandeln.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: stenny am 11 Oktober 2018, 19:57:29
Hallo

Ich möchte ein JSON Datei auswerten in denen an mehreren Stellen scheinbar ein Tab enthalten ist.
Kann ich diesen Tab automatisch ersetzen durch ein leerzeichen? Wenn Ja wie

{
  "senrows": [
{"area": 1, "zone": 1, "type": 37, "type_f": "{D_TYPE_37}", "name": "Eingang",
"cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1",
"tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 9",
"resp_mode": [0,5,5,5,5,0], "ammeter": "0", "ver": "",
"hue": "-1", "sat": "-1", "bypass_tamper": 0,
"status": "", "sid": "RF:0073ed70", "su": 0, "alarm_status": "", "status_ex": "0"},
{"area": 2, "zone": 1, "type": 9, "type_f": "{D_TYPE_9}", "name": "BM Treppenhaus",
"cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1",
"tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 9",
"resp_mode": [0,0,0,0,0,0], "ammeter": "0", "ver": "",
"hue": "-1", "sat": "-1", "bypass_tamper": 0,
"status": "", "sid": "RF:04435330", "su": 1, "alarm_status": "", "status_ex": "0"},
{"area": 1, "zone": 2, "type": 4, "type_f": "{D_TYPE_4}", "name": "Wohnungstür",
"cond": "", "cond_ok": "1", "battery": "", "battery_ok": "1",
"tamper": "", "tamper_ok": "1", "bypass": 0, "rssi": "{WEB_MSG_STRONG} 9",
"resp_mode": [3,1,1,1,1,0], "ammeter": "0", "ver": "",
"hue": "-1", "sat": "-1", "bypass_tamper": 0,
"status": "{WEB_MSG_DC_CLOSE}", "sid": "RF:04993310", "su": 1, "alarm_status": "", "status_ex": "0"}]
}


Der Tab ist nach "{WEB_MSG_STRONG}"


Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Oktober 2018, 17:37:58
Hallo,

mit dem Attribut preProcessRegex kann man vor dem Parsen Zeichen oder ganze Bereiche ersetzen.
Ein Tab sollte eigentlich kein Problem sein, aber wenn man ihn entfernen möchte:

attr MyHTTPMOD preProcessRegex s/\t//g


Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: stenny am 13 Oktober 2018, 00:28:15
Zitat von: StefanStrobel am 12 Oktober 2018, 17:37:58
Hallo,

mit dem Attribut preProcessRegex kann man vor dem Parsen Zeichen oder ganze Bereiche ersetzen.
Ein Tab sollte eigentlich kein Problem sein, aber wenn man ihn entfernen möchte:

attr MyHTTPMOD preProcessRegex s/\t//g


Gruss
   Stefan


Super, jetzt liest er es scheinbar sauber ein


Danke


Gesendet von iPhone mit Tapatalk
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 25 Oktober 2018, 10:42:29
Guten Morgen Stefan,
ich habe nun einen weiteren Bayernlüfter im Haus, dieser verfügt über eine neue firmware, die auf
http://192.168.1.154/?export=1
im Browser mit:
ZitatDate: 25.10.2018
Time: 10:36:11
DeviceName: LueftungWaschenKG
MAC: ECFABC0C93C6
LocalIP: 192.168.1.154
RSSI: -66
FW_MainController: 1838000A
FW_WiFi: WS181011
SystemMode: Kellermode
Speed_In: 00
Speed_Out: 00
Speed_AntiFreeze: 00
Temp_In: 15,9
Temp_Out: 17,3
Temp_Fresh: 14,3
rel_Humidity_In: 71,3
rel_Humidity_Out: 66,9
abs_Humidity_In: 9,7
abs_Humidity_Out: 9,9
Efficiency: N/A
Humidity_Transport: 0
antwortet.

Ich habe also ein HTTPMOD wie folgt:
Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.1.154/?export=1 47
   Interval   47
   LASTSEND   1540456675.87238
   MainURL    http://192.168.1.154/?export=1
   ModuleVersion 3.5.1 - 5.7.2018
   NAME       LueftungWaschenKG
   NR         182
   STATE      ???
   TRIGGERTIME 1540456722.87188
   TRIGGERTIME_FMT 2018-10-25 10:38:42
   TYPE       HTTPMOD
   addr       http://192.168.1.154:80
   auth       0
   buf        HTTP/1.0 200 OK
Content-Type: text/plain
Connection: close

Date: 25.10.2018
Time: 10:37:40
DeviceName: LueftungWaschenKG
MAC: ECFABC0C93C6
LocalIP: 192.168.1.154
RSSI: -66
FW_MainController: 1838000A
FW_WiFi: WS181011
SystemMode: Kellermode
Speed_In: 00
Speed_Out: 00
Speed_AntiFreeze: 00
Temp_In: 15,7
Temp_Out: 17,1
Temp_Fresh: 14,2
rel_Humidity_In: 65,9
rel_Humidity_Out: 70,4
abs_Humidity_In: 8,8
abs_Humidity_Out: 10,3
Efficiency: N/A
Humidity_Transport: 0
0


   data       
   displayurl http://192.168.1.154/?export=1
   header     
   host       192.168.1.154
   httpdatalen -2
   httpversion 1.0
   ignoreredirects 0
   loglevel   4
   path       /?export=1
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.1.154/?export=1
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.1.154/?export=1
     value      0
   helper:
     bm:
       HTTPMOD_Attr:
         cnt        6
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        25.10. 10:29:03
         max        0.000127077102661133
         tot        0.000464200973510742
         mAr:
           set
           LueftungWaschenKG
           enableControlSet
           1
       HTTPMOD_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        25.10. 10:26:55
         max        0.000477075576782227
         tot        0.000477075576782227
         mAr:
           HASH(0x6885808)
           LueftungWaschenKG HTTPMOD http://192.168.1.154/?export=1 47
       HTTPMOD_Get:
         cnt        12
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        25.10. 10:25:50
         max        7.00950622558594e-05
         tot        0.000464200973510742
         mAr:
           HASH(0x6885808)
           LueftungWaschenKG
           ?
       HTTPMOD_Set:
         cnt        30
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        25.10. 10:30:50
         max        0.000125885009765625
         tot        0.00163888931274414
         mAr:
           HASH(0x6885808)
           LueftungWaschenKG
           ?
   sslargs:
Attributes:


Ich habe noch keine readings und regex angelegt und bekomme im Log immer 2s nach dem Intervall folgendes..
Zitat2018.10.25 10:40:18 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out
2018.10.25 10:39:31 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out
2018.10.25 10:38:44 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out
2018.10.25 10:37:57 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out
2018.10.25 10:37:10 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out
2018.10.25 10:36:23 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out

Kannst Du mir sagen was ich, oder die neue Firmware falsch macht..?

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Oktober 2018, 17:20:16
Hallo,

Ohne weitere Details aus dem Log (mit verbose 5) sehe ich leider auch nichts.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 25 Oktober 2018, 17:31:19
hier ein Log mit verbosse 5
Achtung reverseLog...

2018.10.25 17:29:27 4: LueftungWaschenKG: CheckAuth decided no authentication required
2018.10.25 17:29:27 5: LueftungWaschenKG: ExtractSid called, context reading, num
2018.10.25 17:29:27 4: LueftungWaschenKG: Read callback: request type was update retry 0, body empty
2018.10.25 17:29:27 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out

Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Accept-Encoding: gzip,deflate
User-Agent: fhem
Host: 192.168.1.154
GET /?export=1 HTTP/1.0
2018.10.25 17:29:25 5: HttpUtils request header:
2018.10.25 17:29:25 5: HttpUtils url=http://192.168.1.154/?export=1
timeout 2
2018.10.25 17:29:25 4: LueftungWaschenKG: HandleSendQueue sends request type update to URL http://192.168.1.154/?export=1, No Data, No Header
2018.10.25 17:29:25 5: LueftungWaschenKG: HandleSendQueue called, qlen = 1
2018.10.25 17:29:25 5: LueftungWaschenKG: AddToQueue adds type update to URL http://192.168.1.154/?export=1, no data, no headers, retry 0
2018.10.25 17:29:25 4: LueftungWaschenKG: AddToQueue adds update, initial queue len: 0
2018.10.25 17:29:25 4: LueftungWaschenKG: update timer modified: will call GetUpdate in 47.0 seconds at 2018-10-25 17:30:12
2018.10.25 17:29:25 4: LueftungWaschenKG: GetUpdate called (update)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Oktober 2018, 20:52:45
Hallo,

Eventuell antwortet Dein Lüfter nicht, weil er einen Request ohne Header bekommt.

2018.10.25 17:29:25 5: LueftungWaschenKG: AddToQueue adds type update to URL http://192.168.1.154/?export=1, no data, no headers, retry 0


Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 25 Oktober 2018, 21:23:19
Was kann ich dagegen tun? Ich meine - die Informationen kommen ja rein, zumindest einmal...
ein vielleicht voreiliges
attr LueftungWaschenKG requestHeader1 Content-Type: text/plain
half leider nicht...


2018.10.25 21:20:55 4: LueftungWaschenKG: CheckAuth decided no authentication required
2018.10.25 21:20:55 5: LueftungWaschenKG: ExtractSid called, context reading, num
2018.10.25 21:20:55 4: LueftungWaschenKG: Read callback: request type was update retry 0, body empty
2018.10.25 21:20:55 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out

Content-Length: 0
Content-Type: text/plain
1
Accept-Encoding: gzip,deflate
User-Agent: fhem
Host: 192.168.1.154
GET /?export=1 HTTP/1.0
2018.10.25 21:20:53 5: HttpUtils request header:
2018.10.25 21:20:53 5: HttpUtils url=http://192.168.1.154/?export=1
timeout 2
Content-Type: text/plain
header: 1
2018.10.25 21:20:53 4: LueftungWaschenKG: HandleSendQueue sends request type update to URL http://192.168.1.154/?export=1, No Data,
2018.10.25 21:20:53 5: LueftungWaschenKG: HandleSendQueue called, qlen = 1
Content-Type: text/plain, retry 0
2018.10.25 21:20:53 5: LueftungWaschenKG: AddToQueue adds type update to URL http://192.168.1.154/?export=1, no data, header 1
2018.10.25 21:20:53 4: LueftungWaschenKG: AddToQueue adds update, initial queue len: 0
2018.10.25 21:20:53 4: LueftungWaschenKG: update timer modified: will call GetUpdate in 47.0 seconds at 2018-10-25 21:21:40
2018.10.25 21:20:53 4: LueftungWaschenKG: GetUpdate called (update)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Oktober 2018, 23:11:54
Kannst Du das etwas genauer erklären?
Wann kommt eine Antwort und wann nicht?
Wie sieht das Log aus, wenn eine Antwort kommt?
Wann kommt wieder eine Antwort?

Wie ist das im Browser?
Kannst Du da beliebig oft einen Reload machen?
Kannst Du mal mit Burp mitschneiden, was dabei hin und zurück geht?

Gruss
  Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 26 Oktober 2018, 07:29:25
Ich kann leider nicht sagen wann eine antwort kommt - aber nach dem ich das Device angelegt habe wurde der "buf" ja mit dem Informationen gefüllt die ich haben möchte. Im Log finde ich immer nur das selbe:
2018.10.26 07:10:23 4: LueftungWaschenKG: CheckAuth decided no authentication required
2018.10.26 07:10:23 5: LueftungWaschenKG: ExtractSid called, context reading, num
2018.10.26 07:10:23 4: LueftungWaschenKG: Read callback: request type was update retry 0, body empty
2018.10.26 07:10:23 3: LueftungWaschenKG: Read callback: Error: read from http://192.168.1.154:80 timed out

Content-Length: 0
Content-Type: text/plain
Accept-Encoding: gzip,deflate
User-Agent: fhem
Host: 192.168.1.154
GET /?export=1 HTTP/1.0
2018.10.26 07:10:21 5: HttpUtils request header:
2018.10.26 07:10:21 5: HttpUtils url=http://192.168.1.154/?export=1
timeout 2
header: Content-Type: text/plain
2018.10.26 07:10:21 4: LueftungWaschenKG: HandleSendQueue sends request type update to URL http://192.168.1.154/?export=1, No Data,
2018.10.26 07:10:21 5: LueftungWaschenKG: HandleSendQueue called, qlen = 1
2018.10.26 07:10:21 5: LueftungWaschenKG: AddToQueue adds type update to URL http://192.168.1.154/?export=1, no data, header Content-Type: text/plain, retry 0
2018.10.26 07:10:21 4: LueftungWaschenKG: AddToQueue adds update, initial queue len: 0
2018.10.26 07:10:21 4: LueftungWaschenKG: update timer modified: will call GetUpdate in 47.0 seconds at 2018-10-26 07:11:08
2018.10.26 07:10:21 4: LueftungWaschenKG: GetUpdate called (update)


im Browser kann ich reload drücken - verhält sich vollkommen unauffällig, lediglich der Zeitstempel und der RSSI wert des Moduls verändern sich. Burp sagt mir leider nichts, ich habe auch in den nächsten Tagen keinen Zugriff aufs System. Ich würde mich nächste Woche nochmal melden...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 26 Oktober 2018, 09:36:44
ist der zugriff von fhem auf den lüfter exklusiv?
wenn nicht, kappe alle sonstigen verbindungen, wie browser, cloud, ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 26 Oktober 2018, 09:42:54
Ja, FHEM ist der einzige Zugriff auf das Gerät.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 26 Oktober 2018, 10:08:34
dann bau doch mal den kompletten header des browser request in dein httpmod ein.
ich würde auch mal cookies aktivieren, attr enableCookies.

im httpmod wiki gibt es einen link zur burp-suite software.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 03 November 2018, 17:27:13
So, nachdem ich den TimeOut auf 3 gesetzt habe funktioniert der Zugriff ohne weitere Log einträge...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 20 November 2018, 14:58:38
Hallo zusammen.

Ich habe da mal wieder ein Problem mit dem Login und dem Handling der $sid

Der Ablauf sollte wie folgt sein:

http://192.168.178.28/data.txt?sid=$sid
  Der StromZaehler Kopf meldet sich mit dem Login Prompt

Nach meiner Definition wird die notwendige Anmeldung erkannt.
http://192.168.178.28/getSID.txt?pwd=MeinPasswort
  Es kommt die Rückmeldung mit der sid als 32 stelliger HEX Code

Die sid1IdRegex [0-9A-F].* habe ich online getestet und würde den 32 stelliger HEX Code auswählen.
Es wird in Data nur der 32 stelliger HEX Code vom StromZaehler Kopf geschickt.

Ob ich dieses Attribut benötige weiß ich nicht:
attr StromZaehler sid1ParseResponse 1

Nun sollte der Aufruf
http://192.168.178.28/data.txt?sid=$sid
wiederholt werden und um die sid ergänzt werden, was jedoch, wie im Log zu sehen ist nicht erfolgt.


Könnte mir hier eventuell jemand helfen?
Ich verwende die Version:
# $Id: 98_HTTPMOD.pm 17736 2018-11-12 19:42:35Z StefanStrobel

Viele Grüße
     Christian


defmod StromZaehler HTTPMOD http://192.168.178.28/data.txt?sid=$sid 0
attr StromZaehler userattr get01Name get01URL sid1IdRegex sid1ParseResponse:0,1 sid1URL
attr StromZaehler get01Name Strom_Status
attr StromZaehler get01URL http://192.168.178.28/data.txt?sid=$sid
attr StromZaehler httpVersion 1.1
attr StromZaehler reAuthRegex Melden Sie sich mit Ihrem Kennwort an
attr StromZaehler showBody 1
attr StromZaehler showError 1
attr StromZaehler sid1IdRegex [0-9A-F].*
attr StromZaehler sid1ParseResponse 1
attr StromZaehler sid1URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort
attr StromZaehler verbose 5


Das FHEM Log:

2018.11.20 15:15:13 5: StromZaehler: get called with Strom_Status
2018.11.20 15:15:13 5: StromZaehler: get found option Strom_Status in attribute get01Name
2018.11.20 15:15:13 4: StromZaehler: get will now request Strom_Status, no optional value
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds get01, initial queue len: 0
2018.11.20 15:15:13 5: StromZaehler: AddToQueue adds type get01 to URL http://192.168.178.28/data.txt?sid=$sid, no data, no headers, retry 0
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:13 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header
timeout 2
2018.11.20 15:15:13 5: HttpUtils url=http://192.168.178.28/data.txt?sid=$sid
2018.11.20 15:15:13 5: HttpUtils request header:
GET /data.txt?sid=$sid HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:13 4: http://192.168.178.28/data.txt?sid=$sid: HTTP response code 200
2018.11.20 15:15:13 5: HttpUtils http://192.168.178.28/data.txt?sid=$sid: Got data, length: 1101
2018.11.20 15:15:13 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Cache-Control: no-cache
2018.11.20 15:15:13 4: StromZaehler: Read callback: request type was get01 retry 0,
Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="refresh" content="130">
<title>DvLIR</title>
<link href="device.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="shadow-one"><div id="shadow-two"><div id="shadow-three"><div id="shadow-four">
<div id="page">

<center><img src="device.gif" alt="Device"><br><br></center>

<div id="title"><div class="right">DvLIR v2.05</div><span id="hello">&nbsp;</span></div>

<div id="Bordernew">

<form method="post" action="login.htm" name="authenticate" id="authenticate">

<br>
<strong > Melden Sie sich mit Ihrem Kennwort an.</strong><br><br>
<p>
<label>Kennwort: </label>
&nbsp;&nbsp;&nbsp;&nbsp;<input Style="width:211px;" type="Password" name="pwd" value="" maxlength="19" ><br>
</p>
<p id="zero">

<button type="submit" id="btnredirect" >Anmelden</button>
</p>
<br>

</form>
</div>

</div></div></div></div></div>

</body>
</html>

2018.11.20 15:15:13 5: StromZaehler: ExtractSid called, context get, num 01
2018.11.20 15:15:13 5: StromZaehler: CheckAuth is checking buffer with ReAuthRegex Melden Sie sich mit Ihrem Kennwort an
2018.11.20 15:15:13 4: StromZaehler: CheckAuth decided new authentication required
2018.11.20 15:15:13 4: StromZaehler: Auth called with Steps: 1
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds auth1, initial queue len: 0, prio
2018.11.20 15:15:13 5: StromZaehler: AddToQueue prepends type auth1 to URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort, no data, no headers, retry 0
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue - minSendDelay not over, rescheduling
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds get01, initial queue len: 1
2018.11.20 15:15:13 5: StromZaehler: AddToQueue adds type get01 to URL http://192.168.178.28/data.txt?sid=$sid, no data, no headers, retry 1
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 2
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue - minSendDelay not over, rescheduling
2018.11.20 15:15:13 4: StromZaehler: CheckAuth requeued request get01 after auth, retryCount 0 ...
2018.11.20 15:15:14 5: StromZaehler: HandleSendQueue called, qlen = 2
2018.11.20 15:15:14 4: StromZaehler: HandleSendQueue sends request type auth1 to URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort, No Data, No Header
timeout 2
2018.11.20 15:15:14 5: HttpUtils url=http://192.168.178.28/getSID.txt?pwd=MeinPasswort
2018.11.20 15:15:14 5: HttpUtils request header:
GET /getSID.txt?pwd=MeinPasswort HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:14 4: http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: HTTP response code 200
2018.11.20 15:15:14 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: Got data, length: 32
2018.11.20 15:15:14 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.20 15:15:14 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 23CDE0758DA6C417D113C5920122A9F8                               <================ :-)
2018.11.20 15:15:14 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.20 15:15:14 4: StromZaehler: ExtractSid set sid to              <================ :-(
2018.11.20 15:15:15 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:15 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header
timeout 2
2018.11.20 15:15:15 5: HttpUtils url=http://192.168.178.28/data.txt?sid=$sid   <======== :-(
2018.11.20 15:15:15 5: HttpUtils request header:
GET /data.txt?sid=$sid HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:15 4: http://192.168.178.28/data.txt?sid=$sid: HTTP response code 200
2018.11.20 15:15:15 5: HttpUtils http://192.168.178.28/data.txt?sid=$sid: Got data, length: 1101
2018.11.20 15:15:15 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Cache-Control: no-cache
2018.11.20 15:15:15 4: StromZaehler: Read callback: request type was get01 retry 1,
Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="refresh" content="130">
<title>DvLIR</title>
<link href="device.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="shadow-one"><div id="shadow-two"><div id="shadow-three"><div id="shadow-four">
<div id="page">

<center><img src="device.gif" alt="Device"><br><br></center>

<div id="title"><div class="right">DvLIR v2.05</div><span id="hello">&nbsp;</span></div>

<div id="Bordernew">

<form method="post" action="login.htm" name="authenticate" id="authenticate">

<br>
<strong > Melden Sie sich mit Ihrem Kennwort an.</strong><br><br>
<p>
<label>Kennwort: </label>
&nbsp;&nbsp;&nbsp;&nbsp;<input Style="width:211px;" type="Password" name="pwd" value="" maxlength="19" ><br>
</p>
<p id="zero">

<button type="submit" id="btnredirect" >Anmelden</button>
</p>
<br>

</form>
</div>

</div></div></div></div></div>

</body>
</html>

2018.11.20 15:15:15 5: StromZaehler: ExtractSid called, context get, num 01
2018.11.20 15:15:15 5: StromZaehler: CheckAuth is checking buffer with ReAuthRegex Melden Sie sich mit Ihrem Kennwort an
2018.11.20 15:15:15 4: StromZaehler: CheckAuth decided new authentication required
2018.11.20 15:15:15 4: StromZaehler: Authentication still required but no retries left - did last authentication fail?
2018.11.20 15:15:15 5: StromZaehler: ExtractReading for context get, num 01 - no individual parse definition
2018.11.20 15:15:15 5: StromZaehler: Read starts parsing response to get01 with defined readings:
2018.11.20 15:15:15 3: StromZaehler: Read response to get01 didn't match any Reading
2018.11.20 15:15:15 5: StromZaehler: HandleSendQueue called, qlen = 0
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 21 November 2018, 10:15:30
Hallo zusammen,

ich habe mal eine zusätzliche Log Message im Modul eingefügt und dann folgendes festgestellt.

# Extract SID
# called from _Read
###################################
sub HTTPMOD_ExtractSid($$$$)
{
    my ($hash, $buffer, $context, $num) = @_;
    my $name = $hash->{NAME};

    Log3 $name, 5, "$name: ExtractSid called, context $context, num $num";
    my $regex   = AttrVal($name, "idRegex", "");
    my $json    = AttrVal($name, "idJSON", "");
    my $xpath   = AttrVal($name, "idXPath", "");
    my $xpathst = AttrVal($name, "idXPath-Strict", "");

    $regex   = HTTPMOD_GetFAttr($name, $context, $num, "IDRegex", $regex);
    $regex   = HTTPMOD_GetFAttr($name, $context, $num, "IdRegex", $regex);
    Log3 $name, 5, "$name: ExtractSid called, regex $regex";                                 < ========= Ich möchte die Regex sehen




Bisherige Regex:

2018.11.21 09:57:12 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=MeinPasswort: Got data, length: 32
2018.11.21 09:57:12 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 09:57:12 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 40304CE3E4DAB2D6278F94EA8E692420
2018.11.21 09:57:12 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 09:57:12 5: StromZaehler: ExtractSid called, regex [0-9A-F].*                   <============== Das war die bisherige Regex
2018.11.21 09:57:12 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 2378.     <==== :-(
2018.11.21 09:57:12 4: StromZaehler: ExtractSid set sid to
2018.11.21 09:57:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 09:57:13 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header


Neue Regex:

2018.11.21 09:58:49 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: Got data, length: 32
2018.11.21 09:58:49 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 09:58:49 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 2CEB86EA9C4DBFF2232A89F877F5BA7B
2018.11.21 09:58:49 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 09:58:49 5: StromZaehler: ExtractSid called, regex ([0-9A-F].*)                      <============== Neue Regex als Gruppe
2018.11.21 09:58:49 4: StromZaehler: ExtractSid set sid to 1.1 200 OK                            <============== Meine SID steht leider nicht im Header, sondern im Body
2018.11.21 09:58:50 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 09:58:50 4: StromZaehler: HandleSendQueue sends request type get02 to URL http://192.168.178.28/info.txt?sid=1.1 200 OK        <====== schon mal gut


Ich werde dann jetzt mal im Forum suchen. Wenn jemand jedoch einen Tipp hat, wie ich die SID aus dem Body, zur richtigen Zeit in die SID Variable bekomme, dann ist alles herzlich willkommen.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 21 November 2018, 10:34:37
Na geht doch :-)

Ich habe die Lösung nun gefunden.

- Es wird natürlich Header und Body durchsucht.
- Wichtig ist jedoch, dass natürlich der erste Treffer genommen wird, was in meinem Fall die erste Zeile im Header ist.
- Die Regex darf nicht zu allgemein gewählt sein, was in diesem Fall schon etwas schwierig ist, da die SID im Body keine Kennzeichnung hat
  und somit einfach nur ein 32 stelliger HEX String ist.

Aus diesem Grung lautet die Regex nun wie folgt:

([0-9A-F]{32})

Die entspricht allen Ziffern oder die Großbuchstaben von A bis F in einer Folge von 32 Stellen.

Das Ergebnis sieht dann so aus:

2018.11.21 10:22:17 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=MeinPasswort: Got data, length: 32
2018.11.21 10:22:17 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 10:22:17 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: BD69979CB0F0CC430C000CC3ACE8D67D
2018.11.21 10:22:17 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 10:22:17 5: StromZaehler: ExtractSid called, regex ([0-9A-F]{32})
2018.11.21 10:22:17 4: StromZaehler: ExtractSid set sid to BD69979CB0F0CC430C000CC3ACE8D67D
2018.11.21 10:22:18 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 10:22:18 4: StromZaehler: HandleSendQueue sends request type get02 to URL http://192.168.178.28/info.txt?sid=BD69979CB0F0CC430C000CC3ACE8D67D, No Data, No Header


Vielen Dank für's mitlesen und die Animation es selber lösen zu wollen. Manchmal muss man etwas schreiben und zusammenfassen, um es dann selbst zu verstehen.
Ich hoffe dass es auch Euch helfen wird.

Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: buennerbernd am 29 November 2018, 09:18:06
Zitat von: StefanStrobel am 30 Mai 2016, 22:10:13
Hallo buennerbernd,

in der neuen Version (hier gepostet) kannst Du per

attr device readingEncode utf8


auch für alle Readings, die im zyklischen Update per extractAllJSON erzeugt werden, die Ausgabe in utf8 erreichen.
Entsprechend würde man bei einem get z.B. get01Encode utf8 angeben, wenn get01ExtractAllJSON spezifiziert wurde.

Beim Parsen per Regex wäre das nicht nötig, da ich keine Zeichensatzkonvertierung ohne Attribut eingebaut habe.

HTTPMOD verwendet aber für das Parsen von JSON und XPath fertige Bibliotheken (z.B. libjson-perl), die offenbar die Eingabedaten konvertieren. Deshalb klappt es bei Dir nicht, obwohl die Ausgangsdaten bereits als utf8 geliefert werden.
Mit obigem Attribut sollte das Problem aber gelöst sein.

Gruss
    Stefan

Besser spät, als nie...
Ich habe erst gestern deine Anwort bemerkt.
Kappt! Danke  :)

Viele Grüße,
Stefan.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 27 Dezember 2018, 16:52:47
warum verhinderst du das polling nicht, wenn das radio offline ist?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Dezember 2018, 21:52:38
Hallo,

anbei eine neue Version, die setExtensions eingebaut hat und daher auch attrTemplate unterstützt.
Falls es jemand testen möchte, muss er allerdings erst noch Templates definieren, sonst sieht man davon nichts.

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 28 Dezember 2018, 06:45:07
Hallo zusammen,

vorab herzlichen Dank für's Aufgreifen der Anregung!

Anbei ein erstes template für clever-tanken.de, das funktioniert mit der HTTPMOD-Version aus dem vorigen Thread. Einfach (in der Regel) nach /opt/fhem/FHEM/lib/AttrTemplate kopieren, (Rechte beachten).

templates sind dazu gedacht, funktionierende Konfigurationen auf einfachem Weg für die Allgemeinheit nutzbar zu machen, ohne dass man sich das notwendige Wissen irgendwo aus den Untiefen des Forums oder sonstwo zusammensuchen muss. Weiter kann es hilfreich sein, auf das eine oder andere Muster zugreifen zu können, um daraus was neues basteln zu können ;) .

Wenn jemand weitere Vorschläge für templates hat, bitte einfach melden und am besten eine RAW-Definition (oder ein "list -r <device>") mitliefern :) . Ansonsten gilt das hier geschriebene (https://forum.fhem.de/index.php/topic,94495.msg872201.html#msg872201) sinngemäß, ich übernehme gerne für's erste das Hochladen ins svn, wäre aber auch nicht böse, wenn sich jemand anderes meldet...

@StefanStrobel: Was als Ergänzung nett wäre: Wenn als Attribut "model" verwendbar wäre; damit ist dann in den FHEM-Statistiken nachvollziehbar, ob das feature jemand nutzt :) .

Gruß und viel Spaß mit den templates, ein paar weitere habe ich noch eingesammelt, aber noch nicht getestet, update folgt.

Beta-User
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Dezember 2018, 09:31:27
Hier mit zusätzlichem Attribut "model".

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 28 Dezember 2018, 09:56:43
 :)
Dann mal hier eine erweiterte Sammlung für "model", neben Spritpreis ist aktuell drin:
- ORF-Wetter
- homebridge-videodoorbell
- RESOL Solaranlage
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 28 Dezember 2018, 15:03:46
Hallo zusammen.
Nach langer Zeit habe ich mein Thema mit der Vallox KWL wieder aufgenommen. Ich habe neu begonnen den http Ablauf mit Burp zu analysieren, komme jedoch beim Login nicht weiter. Mein Versuch der Steuerung der Vallox KWL ziehlt auf die Kommunikation mit der Vallox Cloud. Der Versuch direkt die KWL mit http anzusprechen ist leider gescheitert.
Hier zu beginn ein funktionierendes Beispiel aus dem Burp repeater:
POST

POST /login HTTP/1.1
Host: cloud.vallox.com
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3AbYuUftm2hMBM5dwB5lIHXkJH.kVEfDWomdNPO2DIOucEjX8BM9543%2FjHDtR0hXlylAWI; lang=de; _csrfToken=5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc; connect.sid=s%3AJQk9_2cWuleAiThm_C2jkwIoEoIRxrh0.ZUcSrQXFs%2BZU%2B%2Fci0xs2JCOecjHpLM7Xg4pCxXmGoWM
Content-Length: 45

username=<Username>&password=<Passwort>

Response

HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:36:34 GMT
set-cookie: _csrfToken=EPW51Eyj-o0LlTNk9TVWOzyj-dGan1b5kZ7g; Path=/
set-cookie: connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"
Date: Fri, 28 Dec 2018 13:36:34 GMT
Connection: keep-alive

{"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}

Hierbei ist die Ausgabe "success":true die positive Rückmeldung.

Als nächstes kann man dann z.B. eine log Abfrage mit "all" starten:

GET /api/logs/432C7775-3FDA-430A-920A-97B591B5F2C4/all HTTP/1.1
Host: cloud.vallox.com
x-csrf-token: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3AbYuUftm2hMBM5dwB5lIHXkJH.kVEfDWomdNPO2DIOucEjX8BM9543%2FjHDtR0hXlylAWI; lang=de; _csrfToken=EPW51Eyj-o0LlTNk9TVWOzyj-dGan1b5kZ7g; connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w
Content-Length: 6

Dann bekommt man solch eine Ausgabe, die ich im Datenteil gekürzt habe:

HTTP/1.1 200 OK
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:39:51 GMT
set-cookie: _csrfToken=oID16ior-Op6S0El6zMbEMNGD64y6VhfEC00; Path=/
set-cookie: connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Cache-Control: no-cache, must-revalidate
Content-Type: application/json; charset=utf-8
Content-Length: 1819471
ETag: W/"1bc34f-37Y/k7f9OdoTLiRBYO+pqw"
Vary: Accept-Encoding
Date: Fri, 28 Dec 2018 13:39:52 GMT
Connection: keep-alive

{"errors":null,"data":[["2017-12-28T13:46:00.000Z",20,8,5,17,0,58],["2017-12-28T13:56:00.000Z",20,8,5,17,0,57],["2017-12-28T14:06:00.000Z",20,8,5,17,0,57],["2017-12-28T14:16:00.000Z",20,8,5,17,0,57],["2017-12-28T14:26:00.000Z",20,8,5,17,0,57],["2017-12-28T14:36:00.000Z",20,8,5,17,0,56],["2017-12-28T14:46:00.000Z",20,8,5,17,0,57],["2017-12-28T14:56:00.000Z",20,8,5,17,0,57],["2017-12-28T15:06:00.000Z",20,7,4,17,0,56],["2017-12-28T15:16:00.000Z",20,7,4,17,0,56],

snip

["2018-12-28T12:12:00.000Z",20,6,1,19,0,54],["2018-12-28T12:22:00.000Z",20,6,1,19,0,54],["2018-12-28T12:32:00.000Z",20,6,1,18,0,54]]}


Soweit so gut und nun meine HTTPMOD Konfiguration:

defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/login 0

attr vallox_cloud httpVersion 1.1
attr vallox_cloud enableCookies 1
attr vallox_cloud handleRedirects 1

attr vallox_cloud queueDelay 3
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

attr vallox_cloud get01Name KWL_All
attr vallox_cloud get01URL https://cloud.vallox.com:443/api/logs/432C7775-3FDA-430A-920A-97B591B5F2C4/all

attr vallox_cloud getHeader1 X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc

# Für das Login
attr vallox_cloud reAuthRegex loginController
attr vallox_cloud sid1Data username=<Username>&password=<Passwort>
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
attr vallox_cloud sid1URL https://cloud.vallox.com/login


Wenn ich nun ein "get vallox_cloud KWL_Status" aufrufe kommen folgende Log Meldungen:

2018.12.28 14:57:19 5: vallox_cloud: get called with KWL_Status
2018.12.28 14:57:19 5: vallox_cloud: get found option KWL_Status in attribute get02Name
2018.12.28 14:57:19 4: vallox_cloud: get will now request KWL_Status, no optional value
2018.12.28 14:57:19 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.28 14:57:19 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI (key _csrfToken;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4 (key connect.sid;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
2018.12.28 14:57:19 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
timeout 5
2018.12.28 14:57:19 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784
2018.12.28 14:57:19 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 5: HttpUtils request header:
GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784 HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:20 4: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: HTTP response code 302
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: Got data, length: 23
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 302 Found
set-cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:21 GMT
set-cookie: _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; Path=/
set-cookie: connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
X-Auth-Required: true
Location: /
Vary: Accept, Accept-Encoding
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Fri, 28 Dec 2018 13:57:21 GMT
Connection: close
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: Found. Redirecting to /
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:21 GMT
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk Rest Path=/
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg Rest Path=/; HttpOnly
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: Redirect (1) to https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk (key _csrfToken;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:20 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
Set-Cookie: _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 Rest Path=/
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:20 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.28 14:57:20 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.28 14:57:20 4: vallox_cloud: Auth called with Steps: 1
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 0, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=<Username>&password=<Passwort>, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 (key _csrfToken;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=<Username>&password=<Passwort>,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com/login
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.12.28 14:57:20 4: vallox_cloud: CheckAuth requeued request get02 after auth, retryCount 0 ...
2018.12.28 14:57:20 5: HttpUtils request header:
POST /login HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 45

2018.12.28 14:57:20 4: https://cloud.vallox.com/login: HTTP response code 302
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com/login: Got data, length: 23
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 302 Found
Vary: X-HTTP-Method-Override, Accept, Accept-Encoding
Location: /
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was auth1 retry 0,
Body: Found. Redirecting to /
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: https://cloud.vallox.com/login: Redirect (1) to https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 1, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 2
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 (key _csrfToken;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:21 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0

2018.12.28 14:57:21 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:21 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:21 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
Set-Cookie: _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:21 4: vallox_cloud: Read callback: request type was auth1 retry 0,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.12.28 14:57:21 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:21 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
2018.12.28 14:57:21 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE Rest Path=/
2018.12.28 14:57:21 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.28 14:57:21 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:21 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE (key _csrfToken;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:23 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:23 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:23 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:24 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:24 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:24 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:24 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:25 GMT
Set-Cookie: _csrfToken=5lGy9oVy-TTb4cZwrUjorgjAL6FTvxOoCh-0; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:25 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:24 4: vallox_cloud: Read callback: request type was get02 retry 1,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.12.28 14:57:24 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:24 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:25 GMT
2018.12.28 14:57:24 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert 5lGy9oVy-TTb4cZwrUjorgjAL6FTvxOoCh-0 Rest Path=/
2018.12.28 14:57:24 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:24 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:24 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:24 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.28 14:57:24 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.28 14:57:24 4: vallox_cloud: Authentication still required but no retries left - did last authentication fail?
2018.12.28 14:57:24 5: vallox_cloud: ExtractReading for context get, num 02 - no individual parse definition
2018.12.28 14:57:24 5: vallox_cloud: Read starts parsing response to get02 with defined readings:
2018.12.28 14:57:24 3: vallox_cloud: Read response to get02 didn't match any Reading
2018.12.28 14:57:24 5: vallox_cloud: HandleSendQueue called, qlen = 0


Meine Erkenntnisse bisher sind:

- Im Burp Repeater läuft es so weit.
    Hier muss man natürlich die cockies manuell weiterreichen.

- Der Login Prozess in FHEM läuft ab und erkennt, dass ein Login notwendig ist.
- Die sid Attribute werden aufgebaut und der Username und das Passwort als Data weitergereicht.
- Das cockie Handling sieht für mich gut aus.

An dieser Stelle komme ich nun nicht mehr weiter.
Kann es etwas mit den Redirects  zu tun haben? Dafür habe ich handleRedirects aktiviert.


Ich wäre für jeden Tipp dankbar.

Für die ganz interessierten Helfen ist in der Vallox Cloud auch ein Gastzugang zu einer Demo möglich.

Viele Grüße und schöne Weihnachten gehabt zu haben :-)
      Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 28 Dezember 2018, 15:32:20
Zitat von: StefanStrobel am 28 Dezember 2018, 09:31:27
Hier mit zusätzlichem Attribut "model".
Thx.
Habe die modifizierte Version vorhin in meinem FHEM eingespielt, das scheint auch mind. mit den clever-tanken-templates zu funktionieren.

Habe das template-file daher leicht verändert ins svn geschoben, dann ist es für alle ohne Klimmzüge ab morgen verfügbar.

Gruß, Beta-User
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 29 Dezember 2018, 20:22:42
Hallo zusammen,

das Thema Vallox Cloud lässt mich einfach nicht los und so habe ich einen Tipp von Stefan nochmals nachgelesen und versucht umzusetzen.
In der Burp Suite habe ich auch bereits die Header minimiert, bis nur noch die notwendigen Attribute für HTTPMOD übrig blieben.
Ich denke es geht nun einen Schritt weiter und die nächste Frage kommt dann weiter unter.

Device settings:

defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/login 0
# Allgemeine Attribute
attr vallox_cloud enableControlSet 1
attr vallox_cloud enableCookies 1
attr vallox_cloud handleRedirects 1
attr vallox_cloud httpVersion 1.1
attr vallox_cloud queueDelay 3
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

# get01 habe ich erst mal raus genommen

attr vallox_cloud get02Name KWL_Status
attr vallox_cloud get02URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
attr vallox_cloud get02Header1 Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
attr vallox_cloud get02Header2 X-XSRF-TOKEN: %%_csrfToken%%

# das war ein Tip von Stefan, bei dem ich das csrfToken zuerst lesen sollte
attr vallox_cloud reading1Name _csrfToken
attr vallox_cloud reading1Regex ((?<=_csrfToken=).*);

# und dann mit einem replacement in z.B. get02Header2 einsetzen sollte
attr vallox_cloud replacement1Mode reading
attr vallox_cloud replacement1Regex %%_csrfToken%%
attr vallox_cloud replacement1Value _csrfToken

attr vallox_cloud reAuthRegex loginController
attr vallox_cloud sid1Data1 username=ch.eick%40arcor.de&password=Alexch0-
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud sid1URL https://cloud.vallox.com/login


Dann sehen die Log Meldungen wie folgt aus:

Wichtig ist hier die Erfolgszeile
Body: {"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}
was ein erfolgreiches Login bedeutet. Ich habe es im folgenden durch Leerzeilen herforgehoben.


2018.12.29 20:08:56 5: vallox_cloud: get called with KWL_Status
2018.12.29 20:08:56 5: vallox_cloud: get found option KWL_Status in attribute get02Name
2018.12.29 20:08:56 4: vallox_cloud: get will now request KWL_Status, no optional value
2018.12.29 20:08:56 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.29 20:08:56 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:56 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8 (key _csrfToken;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw (key connect.sid;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
2018.12.29 20:08:56 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
timeout 5
2018.12.29 20:08:56 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2018.12.29 20:08:56 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:56 5: HttpUtils request header:
GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:08:56 4: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2018.12.29 20:08:56 5: HttpUtils https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: Got data, length: 23
2018.12.29 20:08:56 5: HttpUtils response header:
HTTP/1.1 302 Found
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
set-cookie: _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; Path=/
set-cookie: connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
X-Auth-Required: true
Location: /
Vary: Accept, Accept-Encoding
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
2018.12.29 20:08:56 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: Found. Redirecting to /
2018.12.29 20:08:56 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY Rest Path=/
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk Rest Path=/; HttpOnly
2018.12.29 20:08:56 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:08:56 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.29 20:08:56 4: vallox_cloud: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect (1) to https://cloud.vallox.com:443/
2018.12.29 20:08:56 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0, prio
2018.12.29 20:08:56 5: vallox_cloud: AddToQueue prepends type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:56 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY (key _csrfToken;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk (key connect.sid;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
2018.12.29 20:08:56 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
timeout 5
2018.12.29 20:08:56 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.29 20:08:56 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:57 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:08:57 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.29 20:08:57 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4244
2018.12.29 20:08:57 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
Set-Cookie: _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1094-F9xEl9P1bK206SUsbxVDxw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.29 20:08:57 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Testen Sie die MyVallox Demoversion</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EINFACHE LÜFTUNGSSTEUERUNG</h3>Registrieren Sie Ihr MyVallox Lüftungsgerät im Cloud-Dienst und Sie können die Lüftung in Ihrem Haus von überall steuern.</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Mit Vallox bleibt die Innenraumluft frisch und sauber</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GUTE LÜFTUNG IST EINE INVESTITION INS WOHLBEFINDEN</h3>und die beste Versicherung für Ihr Zuhause</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Einloggen</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="E-Mail-Adresse" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Kennwort" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Einloggen</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Kennwort vergessen?</a></div></div><div class="firmware section"><h1>Aktuelle Firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware Änderungsprotokoll</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">Über Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Hilfe</a></div><div class="legal col-sm-4"><a href="/terms">Geschäftsbedingungen</a><br><a href="/privacy">Datenschutzbestimmungen</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.12.29 20:08:57 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4 Rest Path=/
2018.12.29 20:08:57 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:08:57 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:08:57 4: vallox_cloud: no redirects to handle
2018.12.29 20:08:57 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.29 20:08:57 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.29 20:08:57 4: vallox_cloud: Auth called with Steps: 1
2018.12.29 20:08:57 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 0, prio
2018.12.29 20:08:57 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=ch.eick%40arcor.de&password=Alexch0-, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:57 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:57 4: vallox_cloud: Replace: match for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: username=ch.eick%40arcor.de&password=Alexch0-
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com/login
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4 (key _csrfToken;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk (key connect.sid;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
2018.12.29 20:08:57 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=ch.eick%40arcor.de&password=Alexch0-,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
timeout 5
2018.12.29 20:08:57 5: HttpUtils url=https://cloud.vallox.com/login
2018.12.29 20:08:57 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:57 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.29 20:08:57 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 1
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.12.29 20:08:57 4: vallox_cloud: CheckAuth requeued request get02 after auth, retryCount 0 ...
2018.12.29 20:08:57 5: HttpUtils request header:
POST /login HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
Content-Length: 45

2018.12.29 20:08:57 4: https://cloud.vallox.com/login: HTTP response code 200
2018.12.29 20:08:57 5: HttpUtils https://cloud.vallox.com/login: Got data, length: 74
2018.12.29 20:08:57 5: HttpUtils response header:
HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
set-cookie: _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; Path=/
set-cookie: connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
2018.12.29 20:08:57 4: vallox_cloud: Read callback: request type was auth1 retry 0,





Body: {"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}





2018.12.29 20:08:57 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE Rest Path=/



Hier hat sich der csrfToken geändert, wird jedoch nicht fom HTTPMOD neu ins reading1Name übernommen.
Wie kann ich denn hier das erneuern der readings veranlassen.



2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA Rest Path=/; HttpOnly
2018.12.29 20:08:57 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.29 20:08:57 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:08:57 4: vallox_cloud: no redirects to handle
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:09:00 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:09:00 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4


Und hier kommt dann leider das alte csrfToken.

X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8


2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE (key _csrfToken;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA (key connect.sid;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
2018.12.29 20:09:00 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
timeout 5
2018.12.29 20:09:00 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.29 20:09:00 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:09:00 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:09:00 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.29 20:09:00 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4244
2018.12.29 20:09:00 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:09:02 GMT
Set-Cookie: _csrfToken=0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1094-F9xEl9P1bK206SUsbxVDxw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Sat, 29 Dec 2018 19:09:03 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.29 20:09:00 4: vallox_cloud: Read callback: request type was get02 retry 1,
Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Testen Sie die MyVallox Demoversion</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EINFACHE LÜFTUNGSSTEUERUNG</h3>Registrieren Sie Ihr MyVallox Lüftungsgerät im Cloud-Dienst und Sie können die Lüftung in Ihrem Haus von überall steuern.</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Mit Vallox bleibt die Innenraumluft frisch und sauber</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GUTE LÜFTUNG IST EINE INVESTITION INS WOHLBEFINDEN</h3>und die beste Versicherung für Ihr Zuhause</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Einloggen</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="E-Mail-Adresse" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Kennwort" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Einloggen</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Kennwort vergessen?</a></div></div><div class="firmware section"><h1>Aktuelle Firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware Änderungsprotokoll</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">Über Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Hilfe</a></div><div class="legal col-sm-4"><a href="/terms">Geschäftsbedingungen</a><br><a href="/privacy">Datenschutzbestimmungen</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>
2018.12.29 20:09:00 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:09:00 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:09:02 GMT
2018.12.29 20:09:00 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo Rest Path=/
2018.12.29 20:09:00 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:09:00 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:09:00 4: vallox_cloud: no redirects to handle
2018.12.29 20:09:00 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.29 20:09:00 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.29 20:09:00 4: vallox_cloud: Authentication still required but no retries left - did last authentication fail?
2018.12.29 20:09:00 5: vallox_cloud: ExtractReading for context get, num 02 - no individual parse definition
2018.12.29 20:09:00 5: vallox_cloud: Read starts parsing response to get02 with defined readings: 1
2018.12.29 20:09:00 5: vallox_cloud: ExtractReading _csrfToken with regex /((?<=_csrfToken=).*);/...
2018.12.29 20:09:00 5: vallox_cloud: 1 capture group(s), matchlist = 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo
2018.12.29 20:09:01 4: vallox_cloud: ExtractReading for reading1-1 sets _csrfToken to 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo
2018.12.29 20:09:01 4: vallox_cloud: Read response to get02 matched Reading(s) _csrfToken
2018.12.29 20:09:01 5: vallox_cloud: HandleSendQueue called, qlen = 0



Meine Vermutung ist, dass durch die erneute Verwendung des alten csrfToken dann bei der KWL_Status Abfrage der Login nicht akzeptiert wurde.

Über Tipps würde ich mich wie immer freuen. Und schon mal vielen Dank an Stefan, es hat ein wenig gedauert, bis ich die Inhalte der Postings richtig verstanden hatte.

Viele Grüße
      Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Dezember 2018, 22:38:26
Hallo Christian,

Ich vermute, es fehlt nur noch ein sidParseResponse ...

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 31 Dezember 2018, 12:47:14
Hallo nochmal.
Vielen Dank an Stefan, nun ist der erste Erfolg da.


defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/api/devicestate/<Gerätekennung> 0

# Allgemeine Attribute
attr vallox_cloud enableControlSet 1
attr vallox_cloud enableCookies 1
attr vallox_cloud enforceGoodReadingNames 1
attr vallox_cloud handleRedirects 1
attr vallox_cloud httpVersion 1.1

# Das sind Attribute mit den Test Werten, damit man was sieht
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

# Achtung bei diesem get "/all" werden größere Datenmengen geholt, die mit  get01ExtractAllJSON 1 zu einer erhöhten Laufzeit führen,
# insbesondere wenn verbose auf 5 steht.
attr vallox_cloud get01Name KWL_All
attr vallox_cloud get01URL https://cloud.vallox.com:443/api/logs/<Gerätekennung>/all
attr vallox_cloud get02ExtractAllJSON 0

# Dieses get liefert die JSON Daten für Readings weiter unten. Um all automatisch zu lesen kann get02ExtractAllJSON auf 1 gesetzt werden
attr vallox_cloud get02Name KWL_Status
attr vallox_cloud get02URL https://cloud.vallox.com:443/api/devicestate/<Gerätekennung>
attr vallox_cloud get02Header1 Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=<Gerätekennung>
attr vallox_cloud get02Header2 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud get02ExtractAllJSON 0

# Das csrfToken muss für die nächste Abfrage im Header wieder mitgegeben werden
attr vallox_cloud reading1Name _csrfToken
attr vallox_cloud reading1Regex ((?<=_csrfToken=).*);;
attr vallox_cloud replacement1Mode reading
attr vallox_cloud replacement1Regex %%_csrfToken%%
attr vallox_cloud replacement1Value _csrfToken

# Ein notwendiges Login erkennt man hieran
attr vallox_cloud reAuthRegex loginController

#Diesen Parse benötigt man um csrfToken wieder zu aktualisieren
attr vallox_cloud sid1ParseResponse 1

# Momentan ist es noch etwas unschön wenn ein Login notwendig ist, dann muss KWL_Status zwei mal aufgerufen werden.
# Beim ersten Aufruf wird der Login durchgeführt und beim zweiten erst der KWL_Status abgerufen.
# Beim Requeue wird in meiner Konfiguration noch irgend etwas nicht richtig gesetzt, aber kommt Zeit kommt Rat :-)
attr vallox_cloud dontRequeueAfterAuth 1

# Den Header habe ich bereits auf ein Minimum reduziert
attr vallox_cloud sid1URL https://cloud.vallox.com/login
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud sid1Data1 username=<Username>&password=<Passwort>

# Das sind nun die ersten readings mit lesbaren Namen, die ich aus folgendem Link entnommen habe:
# https://github.com/yozik04/vallox_websocket_api/blob/master/vallox_websocket_api/constants.py
# Ich denke das ist sinnvoll, wenn mal ein guter Geist den Phyton Code nach Perl umsetzt und so eventuell ein Modul für die LAN APIi entsteht.
#
# Hier wird sich noch einiges ändern, da meine Vallox 270 z.B keine Zusatzheizung und keinen CO2 Sensor hat. Also wird alles, was nicht genutzt
# wird noch heraus genommen und die noch fehlenden Readings ergänzt.
attr vallox_cloud reading00001JSON devices
attr vallox_cloud reading00001Name A_CYC_DEVICE._ID
attr vallox_cloud reading00017JSON data.17.value
attr vallox_cloud reading00017Name A_CYC_MACHINE_MODEL
attr vallox_cloud reading04353JSON data.4353.value
attr vallox_cloud reading04353Name A_CYC_FAN_SPEED
attr vallox_cloud reading04354JSON data.4354.value
attr vallox_cloud reading04354Name A_CYC_TEMP_EXTRACT_AIR
attr vallox_cloud reading04355JSON data.4355.value
attr vallox_cloud reading04355Name A_CYC_TEMP_EXHAUST_AIR
attr vallox_cloud reading04356JSON data.4356.value
attr vallox_cloud reading04356Name A_CYC_TEMP_OUTDOOR_AIR
attr vallox_cloud reading04357JSON data.4357.value
attr vallox_cloud reading04357Name A_CYC_TEMP_SUPPLY_CELL_AIR
attr vallox_cloud reading04358JSON data.4358.value
attr vallox_cloud reading04358Name A_CYC_TEMP_SUPPLY_AIR
attr vallox_cloud reading04359JSON data.4359.value
attr vallox_cloud reading04359Name A_CYC_RH_LEVEL
attr vallox_cloud reading04360JSON data.4360.value
attr vallox_cloud reading04360Name A_CYC_CO2_LEVEL
attr vallox_cloud reading04363JSON data.4363.value
attr vallox_cloud reading04363Name A_CYC_RH_VALUE
attr vallox_cloud reading04364JSON data.4364.value
attr vallox_cloud reading04364Name A_CYC_CO2_VALUE
attr vallox_cloud reading04609JSON data.4609.value
attr vallox_cloud reading04609Name A_CYC_STATE
attr vallox_cloud reading04615JSON data.4615.value
attr vallox_cloud reading04615Name A_CYC_WEEKLY_TIMER_ENABLED
attr vallox_cloud reading04616JSON data.4616.value
attr vallox_cloud reading04616Name A_CYC_CELL_STATE
attr vallox_cloud reading05121JSON data.5121.value
attr vallox_cloud reading05121Name A_CYC_IN_EXTRACT_FAN
attr vallox_cloud reading05122JSON data.5122.value
attr vallox_cloud reading05122Name A_CYC_IN_SUPPLY_FAN
attr vallox_cloud reading05124JSON data.5124.value
attr vallox_cloud reading05124Name A_CYC_IN_HEATER
attr vallox_cloud reading05125JSON data.5125.value
attr vallox_cloud reading05125Name A_CYC_IN_EXTRA_HEATER
attr vallox_cloud reading05126JSON data.5126.value
attr vallox_cloud reading05126Name A_CYC_IN_BYPASS
attr vallox_cloud reading20482JSON data.20482.value
attr vallox_cloud reading20482Name A_CYC_MODBUS_ADDRESS
attr vallox_cloud reading20483JSON data.20483.value
attr vallox_cloud reading20483Name A_CYC_MODBUS_BAUD_X100
attr vallox_cloud reading20487JSON data.20487.value
attr vallox_cloud reading20487Name A_CYC_FIREPLACE_EXTR_FAN
attr vallox_cloud reading20488JSON data.20488.value
attr vallox_cloud reading20488Name A_CYC_FIREPLACE_SUPP_FAN
attr vallox_cloud reading20490JSON data.20490.value
attr vallox_cloud reading20490Name A_CYC_RH_BASIC_LEVEL
attr vallox_cloud reading20491JSON data.20491.value
attr vallox_cloud reading20491Name A_CYC_CO2_THRESHOLD
attr vallox_cloud reading20499JSON data.20499.value
attr vallox_cloud reading20499Name A_CYC_AWAY_RH_CTRL_ENABLED
attr vallox_cloud reading20500JSON data.20500.value
attr vallox_cloud reading20500Name A_CYC_AWAY_CO2_CTRL_ENABLED
attr vallox_cloud reading20501JSON data.20501.value
attr vallox_cloud reading20501Name A_CYC_AWAY_SPEED_SETTING
attr vallox_cloud reading20505JSON data.20505.value
attr vallox_cloud reading20505Name A_CYC_HOME_RH_CTRL_ENABLED
attr vallox_cloud reading20506JSON data.20506.value
attr vallox_cloud reading20506Name A_CYC_HOME_CO2_CTRL_ENABLED
attr vallox_cloud reading20507JSON data.20507.value
attr vallox_cloud reading20507Name A_CYC_HOME_SPEED_SETTING
attr vallox_cloud reading20511JSON data.20511.value
attr vallox_cloud reading20511Name A_CYC_BOOST_RH_CTRL_ENABLED
attr vallox_cloud reading20512JSON data.20512.value
attr vallox_cloud reading20512Name A_CYC_BOOST_CO2_CTRL_ENABLED
attr vallox_cloud reading20513JSON data.20513.value
attr vallox_cloud reading20513Name A_CYC_BOOST_SPEED_SETTING
attr vallox_cloud reading20517JSON data.20517.value
attr vallox_cloud reading20517Name A_CYC_RELAY_MODE
attr vallox_cloud reading20524JSON data.20524.value
attr vallox_cloud reading20524Name A_CYC_DEFROST_MODE
attr vallox_cloud reading20542JSON data.20542.value
attr vallox_cloud reading20542Name A_CYC_SIDEDNESS
attr vallox_cloud reading20543JSON data.20543.value
attr vallox_cloud reading20543Name A_CYC_RH_LEVEL_MODE
attr vallox_cloud reading20545JSON data.20545.value
attr vallox_cloud reading20545Name A_CYC_FIREPLACE_TIME
attr vallox_cloud reading20549JSON data.20549.value
attr vallox_cloud reading20549Name A_CYC_SUPPLY_HEATING_ADJUST_MODE
attr vallox_cloud reading20553JSON data.20553.value
attr vallox_cloud reading20553Name A_CYC_OPT_TEMP_SENSOR_MODE
attr vallox_cloud reading21765JSON data.21765.value
attr vallox_cloud reading21765Name A_CYC_PARENTAL_CTRL_ENABLED
attr vallox_cloud reading21767JSON data.21767.value
attr vallox_cloud reading21767Name A_CYC_FIREPLACE_TIMER_ENABLED
attr vallox_cloud reading21768JSON data.21768.value
attr vallox_cloud reading21768Name A_CYC_SUMMER_TIME_AUTO_ENAB
attr vallox_cloud reading21769JSON data.21769.value
attr vallox_cloud reading21769Name A_CYC_12_HOUR_CLOCK_ENABLED
attr vallox_cloud reading32771JSON data.32771.value
attr vallox_cloud reading32771Name A_CYC_BY_PASS_TEST
attr vallox_cloud reading32772JSON data.32772.value
attr vallox_cloud reading32772Name A_CYC_HEATER_TEST
attr vallox_cloud reading32773JSON data.32773.value
attr vallox_cloud reading32773Name A_CYC_EXTRA_HEATER_TEST
attr vallox_cloud reading32774JSON data.32774.value
attr vallox_cloud reading32774Name A_CYC_EFFICIENCY_TEST


Settings für die Steuerung habe ich bereits auch schon im Test, doch dazu dann später mehr.

Viele Grüße
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 03 Januar 2019, 11:12:41
Hallo zusammen,

hier kommt ein Update zu den readings für den MODBUS mit einigen Mappings

Stand 11.01.2019 Hier aktualisiere ich die readings


attr vallox_cloud reading00017JSON data_17_value
attr vallox_cloud reading00017Name A_CYC_MACHINE_MODEL
attr vallox_cloud reading04353JSON data_4353_value
attr vallox_cloud reading04353Name A_CYC_FAN_SPEED
attr vallox_cloud reading04354JSON data_4354_value
attr vallox_cloud reading04354Name A_CYC_TEMP_EXTRACT_AIR
attr vallox_cloud reading04355JSON data_4355_value
attr vallox_cloud reading04355Name A_CYC_TEMP_EXHAUST_AIR
attr vallox_cloud reading04356JSON data_4356_value
attr vallox_cloud reading04356Name A_CYC_TEMP_OUTDOOR_AIR
attr vallox_cloud reading04357JSON data_4357_value
attr vallox_cloud reading04357Name A_CYC_TEMP_SUPPLY_CELL_AIR
attr vallox_cloud reading04358JSON data_4358_value
attr vallox_cloud reading04358Name A_CYC_TEMP_SUPPLY_AIR
attr vallox_cloud reading04359JSON data_4359_value
attr vallox_cloud reading04359Name A_CYC_RH_LEVEL
attr vallox_cloud reading04360JSON data_4360_value
attr vallox_cloud reading04360Name A_CYC_CO2_LEVEL
attr vallox_cloud reading04363JSON data_4363_value
attr vallox_cloud reading04363Name A_CYC_RH_VALUE
attr vallox_cloud reading04364JSON data_4364_value
attr vallox_cloud reading04364Name A_CYC_CO2_VALUE
attr vallox_cloud reading04609JSON data_4609_value
attr vallox_cloud reading04609Name A_CYC_STATE
attr vallox_cloud reading04615JSON data_4615_value
attr vallox_cloud reading04615Name A_CYC_WEEKLY_TIMER_ENABLED
attr vallox_cloud reading04615OMap 0:no, 1:yes
attr vallox_cloud reading04616JSON data_4616_value
attr vallox_cloud reading04616Name A_CYC_CELL_STATE
attr vallox_cloud reading04616OMap 0:heat recovery, 1:cool recovery, 2:bypass, 3:defrosting
attr vallox_cloud reading05121JSON data_5121_value
attr vallox_cloud reading05121Name A_CYC_IN_EXTRACT_FAN
attr vallox_cloud reading05122JSON data_5122_value
attr vallox_cloud reading05122Name A_CYC_IN_SUPPLY_FAN
attr vallox_cloud reading05124JSON data_5124_value
attr vallox_cloud reading05124Name A_CYC_IN_HEATER
attr vallox_cloud reading05125JSON data_5125_value
attr vallox_cloud reading05125Name A_CYC_IN_EXTRA_HEATER
attr vallox_cloud reading05126JSON data_5126_value
attr vallox_cloud reading05126Name A_CYC_IN_BYPASS
attr vallox_cloud reading05126OMap 0:no, 1:yes
attr vallox_cloud reading20482JSON data_20482_value
attr vallox_cloud reading20482Name A_CYC_MODBUS_ADDRESS
attr vallox_cloud reading20483JSON data_20483_value
attr vallox_cloud reading20483Name A_CYC_MODBUS_BAUD_X100
attr vallox_cloud reading20483OMap 96:9600, 192:19200, 384:38400, 576:57600, 1152:115200
attr vallox_cloud reading20487JSON data_20487_value
attr vallox_cloud reading20487Name A_CYC_FIREPLACE_EXTR_FAN
attr vallox_cloud reading20488JSON data_20488_value
attr vallox_cloud reading20488Name A_CYC_FIREPLACE_SUPP_FAN
attr vallox_cloud reading20490JSON data_20490_value
attr vallox_cloud reading20490Name A_CYC_RH_BASIC_LEVEL
attr vallox_cloud reading20491JSON data_20491_value
attr vallox_cloud reading20491Name A_CYC_CO2_THRESHOLD
attr vallox_cloud reading20499JSON data_20499_value
attr vallox_cloud reading20499Name A_CYC_AWAY_RH_CTRL_ENABLED
attr vallox_cloud reading20499OMap 0:no, 1:yes
attr vallox_cloud reading20500JSON data_20500_value
attr vallox_cloud reading20500Name A_CYC_AWAY_CO2_CTRL_ENABLED
attr vallox_cloud reading20500OMap 0:no, 1:yes
attr vallox_cloud reading20501JSON data_20501_value
attr vallox_cloud reading20501Name A_CYC_AWAY_SPEED_SETTING
attr vallox_cloud reading20505JSON data_20505_value
attr vallox_cloud reading20505Name A_CYC_HOME_RH_CTRL_ENABLED
attr vallox_cloud reading20505OMap 0:no, 1:yes
attr vallox_cloud reading20506JSON data_20506_value
attr vallox_cloud reading20506Name A_CYC_HOME_CO2_CTRL_ENABLED
attr vallox_cloud reading20506OMap 0:no, 1:yes
attr vallox_cloud reading20507JSON data_20507_value
attr vallox_cloud reading20507Name A_CYC_HOME_SPEED_SETTING
attr vallox_cloud reading20511JSON data_20511_value
attr vallox_cloud reading20511Name A_CYC_BOOST_RH_CTRL_ENABLED
attr vallox_cloud reading20511OMap 0:no, 1:yes
attr vallox_cloud reading20512JSON data_20512_value
attr vallox_cloud reading20512Name A_CYC_BOOST_CO2_CTRL_ENABLED
attr vallox_cloud reading20512OMap 0:no, 1:yes
attr vallox_cloud reading20513JSON data_20513_value
attr vallox_cloud reading20513Name A_CYC_BOOST_SPEED_SETTING
attr vallox_cloud reading20517JSON data_20517_value
attr vallox_cloud reading20517Name A_CYC_RELAY_MODE
attr vallox_cloud reading20524JSON data_20524_value
attr vallox_cloud reading20524Name A_CYC_DEFROST_MODE
attr vallox_cloud reading20542JSON data_20542_value
attr vallox_cloud reading20542Name A_CYC_SIDEDNESS
attr vallox_cloud reading20542OMap 0:left, 1:right
attr vallox_cloud reading20543JSON data_20543_value
attr vallox_cloud reading20543Name A_CYC_RH_LEVEL_MODE
attr vallox_cloud reading20545JSON data_20545_value
attr vallox_cloud reading20545Name A_CYC_FIREPLACE_TIME
attr vallox_cloud reading20549JSON data_20549_value
attr vallox_cloud reading20549Name A_CYC_SUPPLY_HEATING_ADJUST_MODE
attr vallox_cloud reading20553JSON data_20553_value
attr vallox_cloud reading20553Name A_CYC_OPT_TEMP_SENSOR_MODE
attr vallox_cloud reading21765JSON data_21765_value
attr vallox_cloud reading21765Name A_CYC_PARENTAL_CTRL_ENABLED
attr vallox_cloud reading21767JSON data_21767_value
attr vallox_cloud reading21767Name A_CYC_FIREPLACE_TIMER_ENABLED
attr vallox_cloud reading21767OMap 0:no, 1:yes
attr vallox_cloud reading21768JSON data_21768_value
attr vallox_cloud reading21768Name A_CYC_SUMMER_TIME_AUTO_ENAB
attr vallox_cloud reading21768OMap 0:no, 1:yes
attr vallox_cloud reading21769JSON data_21769_value
attr vallox_cloud reading21769Name A_CYC_12_HOUR_CLOCK_ENABLED
attr vallox_cloud reading21769OMap 0:12h, 1:24h
attr vallox_cloud reading32771JSON data_32771_value
attr vallox_cloud reading32771Name A_CYC_BY_PASS_TEST
attr vallox_cloud reading32772JSON data_32772_value
attr vallox_cloud reading32772Name A_CYC_HEATER_TEST
attr vallox_cloud reading32773JSON data_32773_value
attr vallox_cloud reading32773Name A_CYC_EXTRA_HEATER_TEST
attr vallox_cloud reading32774JSON data_32774_value
attr vallox_cloud reading32774Name A_CYC_EFFICIENCY_TEST
attr vallox_cloud reading65537JSON data_65537_value
attr vallox_cloud reading65537Name EXT_NUM_OF_RH_SENSORS
attr vallox_cloud reading65538JSON data_65538_value
attr vallox_cloud reading65538Name EXT_NUM_OF_CO2_SENSORS
attr vallox_cloud reading65539JSON data_65539_value
attr vallox_cloud reading65539Name EXT_CYC_APPL_SW_VERSION
attr vallox_cloud reading65540JSON data_65540_value
attr vallox_cloud reading65540Name EXT_TEMP_NOW_EXTRACT_AIR
attr vallox_cloud reading65541JSON data_65541_value
attr vallox_cloud reading65541Name EXT_TEMP_NOW_SUPPLY_AIR
attr vallox_cloud reading65542JSON data_65542_value
attr vallox_cloud reading65542Name EXT_TEMP_NOW_OUTDOOR_AIR
attr vallox_cloud reading65543JSON data_65543_value
attr vallox_cloud reading65543Name EXT_TEMP_NOW_EXHAUST_AIR
attr vallox_cloud reading65544JSON data_65544_value
attr vallox_cloud reading65544Name EXT_MODBUS_STOPBIT
attr vallox_cloud reading65545OMap 0:none, 1:even, 2:odd
attr vallox_cloud reading65545JSON data_65545_value
attr vallox_cloud reading65545Name EXT_MODBUS_PARITY
attr vallox_cloud reading65548JSON data_65548_value
attr vallox_cloud reading65548Name EXT_CYC_SERIAL_NUMBER
attr vallox_cloud reading65549JSON data_65549_value
attr vallox_cloud reading65549Name EXT_CYC_FILTER_CHANGED_DATE
attr vallox_cloud reading65550JSON data_65550_value
attr vallox_cloud reading65550Name EXT_CYC_ACTIVE_PROFILE
attr vallox_cloud reading65550OMap 0:home, 1:away, 2:boost, 3:fireplace
attr vallox_cloud reading65553JSON data_65553_value
attr vallox_cloud reading65553Name EXT_CYC_CURRENT_UP_TIME
attr vallox_cloud reading655541JSON data_65554_value_hours
attr vallox_cloud reading655541Name EXT_CYC_TOTAL_UP_TIME_HOURS
attr vallox_cloud reading655542JSON data_65554_value_years
attr vallox_cloud reading655542Name EXT_CYC_TOTAL_UP_TIME_YEARS

# Das sind die neuen Kalender readings
attr vallox_cloud reading65557000JSON data_65557_marks_00:00 1
attr vallox_cloud reading65557000Name EXT_CYC_WEEKLY_EVENTS_MONDAY_00
attr vallox_cloud reading65557001JSON data_65557_marks_01:00 1
attr vallox_cloud reading65557001Name EXT_CYC_WEEKLY_EVENTS_MONDAY_01
attr vallox_cloud reading65557002JSON data_65557_marks_02:00 1
attr vallox_cloud reading65557002Name EXT_CYC_WEEKLY_EVENTS_MONDAY_02
attr vallox_cloud reading65557003JSON data_65557_marks_03:00 1
attr vallox_cloud reading65557003Name EXT_CYC_WEEKLY_EVENTS_MONDAY_03
attr vallox_cloud reading65557004JSON data_65557_marks_04:00 1
attr vallox_cloud reading65557004Name EXT_CYC_WEEKLY_EVENTS_MONDAY_04
attr vallox_cloud reading65557005JSON data_65557_marks_05:00 1
attr vallox_cloud reading65557005Name EXT_CYC_WEEKLY_EVENTS_MONDAY_05
attr vallox_cloud reading65557006JSON data_65557_marks_06:00 1
attr vallox_cloud reading65557006Name EXT_CYC_WEEKLY_EVENTS_MONDAY_06
attr vallox_cloud reading65557007JSON data_65557_marks_07:00 1
attr vallox_cloud reading65557007Name EXT_CYC_WEEKLY_EVENTS_MONDAY_07
attr vallox_cloud reading65557008JSON data_65557_marks_08:00 1
attr vallox_cloud reading65557008Name EXT_CYC_WEEKLY_EVENTS_MONDAY_08
attr vallox_cloud reading65557009JSON data_65557_marks_09:00 1
attr vallox_cloud reading65557009Name EXT_CYC_WEEKLY_EVENTS_MONDAY_09
attr vallox_cloud reading65557010JSON data_65557_marks_10:00 1
attr vallox_cloud reading65557010Name EXT_CYC_WEEKLY_EVENTS_MONDAY_10
attr vallox_cloud reading65557011JSON data_65557_marks_11:00 1
attr vallox_cloud reading65557011Name EXT_CYC_WEEKLY_EVENTS_MONDAY_11
attr vallox_cloud reading65557012JSON data_65557_marks_12:00 1
attr vallox_cloud reading65557012Name EXT_CYC_WEEKLY_EVENTS_MONDAY_12
attr vallox_cloud reading65557013JSON data_65557_marks_13:00 1
attr vallox_cloud reading65557013Name EXT_CYC_WEEKLY_EVENTS_MONDAY_13
attr vallox_cloud reading65557014JSON data_65557_marks_14:00 1
attr vallox_cloud reading65557014Name EXT_CYC_WEEKLY_EVENTS_MONDAY_14
attr vallox_cloud reading65557015JSON data_65557_marks_15:00 1
attr vallox_cloud reading65557015Name EXT_CYC_WEEKLY_EVENTS_MONDAY_15
attr vallox_cloud reading65557016JSON data_65557_marks_16:00 1
attr vallox_cloud reading65557016Name EXT_CYC_WEEKLY_EVENTS_MONDAY_16
attr vallox_cloud reading65557017JSON data_65557_marks_17:00 1
attr vallox_cloud reading65557017Name EXT_CYC_WEEKLY_EVENTS_MONDAY_17
attr vallox_cloud reading65557018JSON data_65557_marks_18:00 1
attr vallox_cloud reading65557018Name EXT_CYC_WEEKLY_EVENTS_MONDAY_18
attr vallox_cloud reading65557019JSON data_65557_marks_19:00 1
attr vallox_cloud reading65557019Name EXT_CYC_WEEKLY_EVENTS_MONDAY_19
attr vallox_cloud reading65557020JSON data_65557_marks_20:00 1
attr vallox_cloud reading65557020Name EXT_CYC_WEEKLY_EVENTS_MONDAY_20
attr vallox_cloud reading65557021JSON data_65557_marks_21:00 1
attr vallox_cloud reading65557021Name EXT_CYC_WEEKLY_EVENTS_MONDAY_21
attr vallox_cloud reading65557022JSON data_65557_marks_22:00 1
attr vallox_cloud reading65557022Name EXT_CYC_WEEKLY_EVENTS_MONDAY_22
attr vallox_cloud reading65557023JSON data_65557_marks_23:00 1
attr vallox_cloud reading65557023Name EXT_CYC_WEEKLY_EVENTS_MONDAY_23
attr vallox_cloud reading65557024JSON data_65557_marks_00:00 2
attr vallox_cloud reading65557024Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_00
attr vallox_cloud reading65557025JSON data_65557_marks_01:00 2
attr vallox_cloud reading65557025Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_01
attr vallox_cloud reading65557026JSON data_65557_marks_02:00 2
attr vallox_cloud reading65557026Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_02
attr vallox_cloud reading65557027JSON data_65557_marks_03:00 2
attr vallox_cloud reading65557027Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_03
attr vallox_cloud reading65557028JSON data_65557_marks_04:00 2
attr vallox_cloud reading65557028Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_04
attr vallox_cloud reading65557029JSON data_65557_marks_05:00 2
attr vallox_cloud reading65557029Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_05
attr vallox_cloud reading65557030JSON data_65557_marks_06:00 2
attr vallox_cloud reading65557030Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_06
attr vallox_cloud reading65557031JSON data_65557_marks_07:00 2
attr vallox_cloud reading65557031Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_07
attr vallox_cloud reading65557032JSON data_65557_marks_08:00 2
attr vallox_cloud reading65557032Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_08
attr vallox_cloud reading65557033JSON data_65557_marks_09:00 2
attr vallox_cloud reading65557033Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_09
attr vallox_cloud reading65557034JSON data_65557_marks_10:00 2
attr vallox_cloud reading65557034Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_10
attr vallox_cloud reading65557035JSON data_65557_marks_11:00 2
attr vallox_cloud reading65557035Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_11
attr vallox_cloud reading65557036JSON data_65557_marks_12:00 2
attr vallox_cloud reading65557036Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_12
attr vallox_cloud reading65557037JSON data_65557_marks_13:00 2
attr vallox_cloud reading65557037Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_13
attr vallox_cloud reading65557038JSON data_65557_marks_14:00 2
attr vallox_cloud reading65557038Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_14
attr vallox_cloud reading65557039JSON data_65557_marks_15:00 2
attr vallox_cloud reading65557039Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_15
attr vallox_cloud reading65557040JSON data_65557_marks_16:00 2
attr vallox_cloud reading65557040Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_16
attr vallox_cloud reading65557041JSON data_65557_marks_17:00 2
attr vallox_cloud reading65557041Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_17
attr vallox_cloud reading65557042JSON data_65557_marks_18:00 2
attr vallox_cloud reading65557042Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_18
attr vallox_cloud reading65557043JSON data_65557_marks_19:00 2
attr vallox_cloud reading65557043Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_19
attr vallox_cloud reading65557044JSON data_65557_marks_20:00 2
attr vallox_cloud reading65557044Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_20
attr vallox_cloud reading65557045JSON data_65557_marks_21:00 2
attr vallox_cloud reading65557045Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_21
attr vallox_cloud reading65557046JSON data_65557_marks_22:00 2
attr vallox_cloud reading65557046Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_22
attr vallox_cloud reading65557047JSON data_65557_marks_23:00 2
attr vallox_cloud reading65557047Name EXT_CYC_WEEKLY_EVENTS_TUESDAY_23
attr vallox_cloud reading65557048JSON data_65557_marks_00:00 3
attr vallox_cloud reading65557048Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_00
attr vallox_cloud reading65557049JSON data_65557_marks_01:00 3
attr vallox_cloud reading65557049Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_01
attr vallox_cloud reading65557050JSON data_65557_marks_02:00 3
attr vallox_cloud reading65557050Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_02
attr vallox_cloud reading65557051JSON data_65557_marks_03:00 3
attr vallox_cloud reading65557051Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_03
attr vallox_cloud reading65557052JSON data_65557_marks_04:00 3
attr vallox_cloud reading65557052Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_04
attr vallox_cloud reading65557053JSON data_65557_marks_05:00 3
attr vallox_cloud reading65557053Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_05
attr vallox_cloud reading65557054JSON data_65557_marks_06:00 3
attr vallox_cloud reading65557054Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_06
attr vallox_cloud reading65557055JSON data_65557_marks_07:00 3
attr vallox_cloud reading65557055Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_07
attr vallox_cloud reading65557056JSON data_65557_marks_08:00 3
attr vallox_cloud reading65557056Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_08
attr vallox_cloud reading65557057JSON data_65557_marks_09:00 3
attr vallox_cloud reading65557057Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_09
attr vallox_cloud reading65557058JSON data_65557_marks_10:00 3
attr vallox_cloud reading65557058Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_10
attr vallox_cloud reading65557059JSON data_65557_marks_11:00 3
attr vallox_cloud reading65557059Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_11
attr vallox_cloud reading65557060JSON data_65557_marks_12:00 3
attr vallox_cloud reading65557060Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_12
attr vallox_cloud reading65557061JSON data_65557_marks_13:00 3
attr vallox_cloud reading65557061Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_13
attr vallox_cloud reading65557062JSON data_65557_marks_14:00 3
attr vallox_cloud reading65557062Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_14
attr vallox_cloud reading65557063JSON data_65557_marks_15:00 3
attr vallox_cloud reading65557063Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_15
attr vallox_cloud reading65557064JSON data_65557_marks_16:00 3
attr vallox_cloud reading65557064Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_16
attr vallox_cloud reading65557065JSON data_65557_marks_17:00 3
attr vallox_cloud reading65557065Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_17
attr vallox_cloud reading65557066JSON data_65557_marks_18:00 3
attr vallox_cloud reading65557066Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_18
attr vallox_cloud reading65557067JSON data_65557_marks_19:00 3
attr vallox_cloud reading65557067Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_19
attr vallox_cloud reading65557068JSON data_65557_marks_20:00 3
attr vallox_cloud reading65557068Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_20
attr vallox_cloud reading65557069JSON data_65557_marks_21:00 3
attr vallox_cloud reading65557069Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_21
attr vallox_cloud reading65557070JSON data_65557_marks_22:00 3
attr vallox_cloud reading65557070Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_22
attr vallox_cloud reading65557071JSON data_65557_marks_23:00 3
attr vallox_cloud reading65557071Name EXT_CYC_WEEKLY_EVENTS_WEDNESDAY_23
attr vallox_cloud reading65557072JSON data_65557_marks_00:00 4
attr vallox_cloud reading65557072Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_00
attr vallox_cloud reading65557073JSON data_65557_marks_01:00 4
attr vallox_cloud reading65557073Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_01
attr vallox_cloud reading65557074JSON data_65557_marks_02:00 4
attr vallox_cloud reading65557074Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_02
attr vallox_cloud reading65557075JSON data_65557_marks_03:00 4
attr vallox_cloud reading65557075Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_03
attr vallox_cloud reading65557076JSON data_65557_marks_04:00 4
attr vallox_cloud reading65557076Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_04
attr vallox_cloud reading65557077JSON data_65557_marks_05:00 4
attr vallox_cloud reading65557077Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_05
attr vallox_cloud reading65557078JSON data_65557_marks_06:00 4
attr vallox_cloud reading65557078Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_06
attr vallox_cloud reading65557079JSON data_65557_marks_07:00 4
attr vallox_cloud reading65557079Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_07
attr vallox_cloud reading65557080JSON data_65557_marks_08:00 4
attr vallox_cloud reading65557080Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_08
attr vallox_cloud reading65557081JSON data_65557_marks_09:00 4
attr vallox_cloud reading65557081Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_09
attr vallox_cloud reading65557082JSON data_65557_marks_10:00 4
attr vallox_cloud reading65557082Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_10
attr vallox_cloud reading65557083JSON data_65557_marks_11:00 4
attr vallox_cloud reading65557083Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_11
attr vallox_cloud reading65557084JSON data_65557_marks_12:00 4
attr vallox_cloud reading65557084Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_12
attr vallox_cloud reading65557085JSON data_65557_marks_13:00 4
attr vallox_cloud reading65557085Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_13
attr vallox_cloud reading65557086JSON data_65557_marks_14:00 4
attr vallox_cloud reading65557086Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_14
attr vallox_cloud reading65557087JSON data_65557_marks_15:00 4
attr vallox_cloud reading65557087Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_15
attr vallox_cloud reading65557088JSON data_65557_marks_16:00 4
attr vallox_cloud reading65557088Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_16
attr vallox_cloud reading65557089JSON data_65557_marks_17:00 4
attr vallox_cloud reading65557089Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_17
attr vallox_cloud reading65557090JSON data_65557_marks_18:00 4
attr vallox_cloud reading65557090Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_18
attr vallox_cloud reading65557091JSON data_65557_marks_19:00 4
attr vallox_cloud reading65557091Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_19
attr vallox_cloud reading65557092JSON data_65557_marks_20:00 4
attr vallox_cloud reading65557092Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_20
attr vallox_cloud reading65557093JSON data_65557_marks_21:00 4
attr vallox_cloud reading65557093Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_21
attr vallox_cloud reading65557094JSON data_65557_marks_22:00 4
attr vallox_cloud reading65557094Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_22
attr vallox_cloud reading65557095JSON data_65557_marks_23:00 4
attr vallox_cloud reading65557095Name EXT_CYC_WEEKLY_EVENTS_THURSDAY_23
attr vallox_cloud reading65557096JSON data_65557_marks_00:00 5
attr vallox_cloud reading65557096Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_00
attr vallox_cloud reading65557097JSON data_65557_marks_01:00 5
attr vallox_cloud reading65557097Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_01
attr vallox_cloud reading65557098JSON data_65557_marks_02:00 5
attr vallox_cloud reading65557098Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_02
attr vallox_cloud reading65557099JSON data_65557_marks_03:00 5
attr vallox_cloud reading65557099Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_03
attr vallox_cloud reading65557100JSON data_65557_marks_04:00 5
attr vallox_cloud reading65557100Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_04
attr vallox_cloud reading65557101JSON data_65557_marks_05:00 5
attr vallox_cloud reading65557101Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_05
attr vallox_cloud reading65557102JSON data_65557_marks_06:00 5
attr vallox_cloud reading65557102Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_06
attr vallox_cloud reading65557103JSON data_65557_marks_07:00 5
attr vallox_cloud reading65557103Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_07
attr vallox_cloud reading65557104JSON data_65557_marks_08:00 5
attr vallox_cloud reading65557104Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_08
attr vallox_cloud reading65557105JSON data_65557_marks_09:00 5
attr vallox_cloud reading65557105Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_09
attr vallox_cloud reading65557106JSON data_65557_marks_10:00 5
attr vallox_cloud reading65557106Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_10
attr vallox_cloud reading65557107JSON data_65557_marks_11:00 5
attr vallox_cloud reading65557107Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_11
attr vallox_cloud reading65557108JSON data_65557_marks_12:00 5
attr vallox_cloud reading65557108Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_12
attr vallox_cloud reading65557109JSON data_65557_marks_13:00 5
attr vallox_cloud reading65557109Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_13
attr vallox_cloud reading65557110JSON data_65557_marks_14:00 5
attr vallox_cloud reading65557110Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_14
attr vallox_cloud reading65557111JSON data_65557_marks_15:00 5
attr vallox_cloud reading65557111Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_15
attr vallox_cloud reading65557112JSON data_65557_marks_16:00 5
attr vallox_cloud reading65557112Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_16
attr vallox_cloud reading65557113JSON data_65557_marks_17:00 5
attr vallox_cloud reading65557113Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_17
attr vallox_cloud reading65557114JSON data_65557_marks_18:00 5
attr vallox_cloud reading65557114Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_18
attr vallox_cloud reading65557115JSON data_65557_marks_19:00 5
attr vallox_cloud reading65557115Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_19
attr vallox_cloud reading65557116JSON data_65557_marks_20:00 5
attr vallox_cloud reading65557116Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_20
attr vallox_cloud reading65557117JSON data_65557_marks_21:00 5
attr vallox_cloud reading65557117Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_21
attr vallox_cloud reading65557118JSON data_65557_marks_22:00 5
attr vallox_cloud reading65557118Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_22
attr vallox_cloud reading65557119JSON data_65557_marks_23:00 5
attr vallox_cloud reading65557119Name EXT_CYC_WEEKLY_EVENTS_FRIDAY_23
attr vallox_cloud reading65557120JSON data_65557_marks_00:00 6
attr vallox_cloud reading65557120Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_00
attr vallox_cloud reading65557121JSON data_65557_marks_01:00 6
attr vallox_cloud reading65557121Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_01
attr vallox_cloud reading65557122JSON data_65557_marks_02:00 6
attr vallox_cloud reading65557122Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_02
attr vallox_cloud reading65557123JSON data_65557_marks_03:00 6
attr vallox_cloud reading65557123Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_03
attr vallox_cloud reading65557124JSON data_65557_marks_04:00 6
attr vallox_cloud reading65557124Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_04
attr vallox_cloud reading65557125JSON data_65557_marks_05:00 6
attr vallox_cloud reading65557125Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_05
attr vallox_cloud reading65557126JSON data_65557_marks_06:00 6
attr vallox_cloud reading65557126Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_06
attr vallox_cloud reading65557127JSON data_65557_marks_07:00 6
attr vallox_cloud reading65557127Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_07
attr vallox_cloud reading65557128JSON data_65557_marks_08:00 6
attr vallox_cloud reading65557128Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_08
attr vallox_cloud reading65557129JSON data_65557_marks_09:00 6
attr vallox_cloud reading65557129Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_09
attr vallox_cloud reading65557130JSON data_65557_marks_10:00 6
attr vallox_cloud reading65557130Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_10
attr vallox_cloud reading65557131JSON data_65557_marks_11:00 6
attr vallox_cloud reading65557131Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_11
attr vallox_cloud reading65557132JSON data_65557_marks_12:00 6
attr vallox_cloud reading65557132Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_12
attr vallox_cloud reading65557133JSON data_65557_marks_13:00 6
attr vallox_cloud reading65557133Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_13
attr vallox_cloud reading65557134JSON data_65557_marks_14:00 6
attr vallox_cloud reading65557134Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_14
attr vallox_cloud reading65557135JSON data_65557_marks_15:00 6
attr vallox_cloud reading65557135Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_15
attr vallox_cloud reading65557136JSON data_65557_marks_16:00 6
attr vallox_cloud reading65557136Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_16
attr vallox_cloud reading65557137JSON data_65557_marks_17:00 6
attr vallox_cloud reading65557137Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_17
attr vallox_cloud reading65557138JSON data_65557_marks_18:00 6
attr vallox_cloud reading65557138Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_18
attr vallox_cloud reading65557139JSON data_65557_marks_19:00 6
attr vallox_cloud reading65557139Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_19
attr vallox_cloud reading65557140JSON data_65557_marks_20:00 6
attr vallox_cloud reading65557140Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_20
attr vallox_cloud reading65557141JSON data_65557_marks_21:00 6
attr vallox_cloud reading65557141Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_21
attr vallox_cloud reading65557142JSON data_65557_marks_22:00 6
attr vallox_cloud reading65557142Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_22
attr vallox_cloud reading65557143JSON data_65557_marks_23:00 6
attr vallox_cloud reading65557143Name EXT_CYC_WEEKLY_EVENTS_SATURDAY_23
attr vallox_cloud reading65557144JSON data_65557_marks_00:00 0
attr vallox_cloud reading65557144Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_00
attr vallox_cloud reading65557145JSON data_65557_marks_01:00 0
attr vallox_cloud reading65557145Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_01
attr vallox_cloud reading65557146JSON data_65557_marks_02:00 0
attr vallox_cloud reading65557146Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_02
attr vallox_cloud reading65557147JSON data_65557_marks_03:00 0
attr vallox_cloud reading65557147Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_03
attr vallox_cloud reading65557148JSON data_65557_marks_04:00 0
attr vallox_cloud reading65557148Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_04
attr vallox_cloud reading65557149JSON data_65557_marks_05:00 0
attr vallox_cloud reading65557149Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_05
attr vallox_cloud reading65557150JSON data_65557_marks_06:00 0
attr vallox_cloud reading65557150Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_06
attr vallox_cloud reading65557151JSON data_65557_marks_07:00 0
attr vallox_cloud reading65557151Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_07
attr vallox_cloud reading65557152JSON data_65557_marks_08:00 0
attr vallox_cloud reading65557152Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_08
attr vallox_cloud reading65557153JSON data_65557_marks_09:00 0
attr vallox_cloud reading65557153Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_09
attr vallox_cloud reading65557154JSON data_65557_marks_10:00 0
attr vallox_cloud reading65557154Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_10
attr vallox_cloud reading65557155JSON data_65557_marks_11:00 0
attr vallox_cloud reading65557155Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_11
attr vallox_cloud reading65557156JSON data_65557_marks_12:00 0
attr vallox_cloud reading65557156Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_12
attr vallox_cloud reading65557157JSON data_65557_marks_13:00 0
attr vallox_cloud reading65557157Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_13
attr vallox_cloud reading65557158JSON data_65557_marks_14:00 0
attr vallox_cloud reading65557158Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_14
attr vallox_cloud reading65557159JSON data_65557_marks_15:00 0
attr vallox_cloud reading65557159Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_15
attr vallox_cloud reading65557160JSON data_65557_marks_16:00 0
attr vallox_cloud reading65557160Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_16
attr vallox_cloud reading65557161JSON data_65557_marks_17:00 0
attr vallox_cloud reading65557161Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_17
attr vallox_cloud reading65557162JSON data_65557_marks_18:00 0
attr vallox_cloud reading65557162Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_18
attr vallox_cloud reading65557163JSON data_65557_marks_19:00 0
attr vallox_cloud reading65557163Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_19
attr vallox_cloud reading65557164JSON data_65557_marks_20:00 0
attr vallox_cloud reading65557164Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_20
attr vallox_cloud reading65557165JSON data_65557_marks_21:00 0
attr vallox_cloud reading65557165Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_21
attr vallox_cloud reading65557166JSON data_65557_marks_22:00 0
attr vallox_cloud reading65557166Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_22
attr vallox_cloud reading65557167JSON data_65557_marks_23:00 0
attr vallox_cloud reading65557167Name EXT_CYC_WEEKLY_EVENTS_SUNDAY_23


attr vallox_cloud reading65559JSON data_65559_value
attr vallox_cloud reading65559Map 0:no, 1:yes
attr vallox_cloud reading65559Name EXT_CYC_START_SELFTEST
attr vallox_cloud reading65559OMap 0:no, 1:yes
attr vallox_cloud reading65560JSON data_65560_value
attr vallox_cloud reading65560Name EXT_CYC_POWER
attr vallox_cloud reading65561JSON data_65561_value
attr vallox_cloud reading65561Name EXT_CYC_TIME
attr vallox_cloud reading65562JSON data_65562_value
attr vallox_cloud reading65562Name EXT_CYC_DATE
attr vallox_cloud reading65564JSON data_65564_value
attr vallox_cloud reading65564Name EXT_SHOW_WIZARD

# Hierzu habe ich keine modbus Namen gefunden
attr vallox_cloud reading65565JSON data_65565_

attr vallox_cloud reading65568JSON data_65568_value
attr vallox_cloud reading65568Name EXT_CYC_SUPP_FAN_SPEED
attr vallox_cloud reading65569JSON data_65569_value
attr vallox_cloud reading65569Name EXT_CYC_EXTR_FAN_SPEED
attr vallox_cloud reading65572JSON data_65572_value
attr vallox_cloud reading65572Name EXT_TEST_MODE_SWITCH
attr vallox_cloud reading65579JSON data_65579_value
attr vallox_cloud reading65579Name EXT_HOME_AIR_TEMP_TARGET
attr vallox_cloud reading65580JSON data_65580_value
attr vallox_cloud reading65580Name EXT_AWAY_AIR_TEMP_TARGET
attr vallox_cloud reading65581JSON data_65581_value
attr vallox_cloud reading65581Name EXT_BOOST_AIR_TEMP_TARGET

# Das sind die neuen Kalender readings
attr vallox_cloud reading65590000JSON data_65590_00:00 1
attr vallox_cloud reading65590000Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_00
attr vallox_cloud reading65590001JSON data_65590_01:00 1
attr vallox_cloud reading65590001Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_01
attr vallox_cloud reading65590002JSON data_65590_02:00 1
attr vallox_cloud reading65590002Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_02
attr vallox_cloud reading65590003JSON data_65590_03:00 1
attr vallox_cloud reading65590003Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_03
attr vallox_cloud reading65590004JSON data_65590_04:00 1
attr vallox_cloud reading65590004Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_04
attr vallox_cloud reading65590005JSON data_65590_05:00 1
attr vallox_cloud reading65590005Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_05
attr vallox_cloud reading65590006JSON data_65590_06:00 1
attr vallox_cloud reading65590006Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_06
attr vallox_cloud reading65590007JSON data_65590_07:00 1
attr vallox_cloud reading65590007Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_07
attr vallox_cloud reading65590008JSON data_65590_08:00 1
attr vallox_cloud reading65590008Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_08
attr vallox_cloud reading65590009JSON data_65590_09:00 1
attr vallox_cloud reading65590009Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_09
attr vallox_cloud reading65590010JSON data_65590_10:00 1
attr vallox_cloud reading65590010Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_10
attr vallox_cloud reading65590011JSON data_65590_11:00 1
attr vallox_cloud reading65590011Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_11
attr vallox_cloud reading65590012JSON data_65590_12:00 1
attr vallox_cloud reading65590012Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_12
attr vallox_cloud reading65590013JSON data_65590_13:00 1
attr vallox_cloud reading65590013Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_13
attr vallox_cloud reading65590014JSON data_65590_14:00 1
attr vallox_cloud reading65590014Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_14
attr vallox_cloud reading65590015JSON data_65590_15:00 1
attr vallox_cloud reading65590015Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_15
attr vallox_cloud reading65590016JSON data_65590_16:00 1
attr vallox_cloud reading65590016Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_16
attr vallox_cloud reading65590017JSON data_65590_17:00 1
attr vallox_cloud reading65590017Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_17
attr vallox_cloud reading65590018JSON data_65590_18:00 1
attr vallox_cloud reading65590018Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_18
attr vallox_cloud reading65590019JSON data_65590_19:00 1
attr vallox_cloud reading65590019Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_19
attr vallox_cloud reading65590020JSON data_65590_20:00 1
attr vallox_cloud reading65590020Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_20
attr vallox_cloud reading65590021JSON data_65590_21:00 1
attr vallox_cloud reading65590021Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_21
attr vallox_cloud reading65590022JSON data_65590_22:00 1
attr vallox_cloud reading65590022Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_22
attr vallox_cloud reading65590023JSON data_65590_23:00 1
attr vallox_cloud reading65590023Name EXT_CYC_OLD_WEEKLY_EVENTS_MONDAY_23
attr vallox_cloud reading65590024JSON data_65590_00:00 2
attr vallox_cloud reading65590024Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_00
attr vallox_cloud reading65590025JSON data_65590_01:00 2
attr vallox_cloud reading65590025Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_01
attr vallox_cloud reading65590026JSON data_65590_02:00 2
attr vallox_cloud reading65590026Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_02
attr vallox_cloud reading65590027JSON data_65590_03:00 2
attr vallox_cloud reading65590027Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_03
attr vallox_cloud reading65590028JSON data_65590_04:00 2
attr vallox_cloud reading65590028Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_04
attr vallox_cloud reading65590029JSON data_65590_05:00 2
attr vallox_cloud reading65590029Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_05
attr vallox_cloud reading65590030JSON data_65590_06:00 2
attr vallox_cloud reading65590030Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_06
attr vallox_cloud reading65590031JSON data_65590_07:00 2
attr vallox_cloud reading65590031Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_07
attr vallox_cloud reading65590032JSON data_65590_08:00 2
attr vallox_cloud reading65590032Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_08
attr vallox_cloud reading65590033JSON data_65590_09:00 2
attr vallox_cloud reading65590033Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_09
attr vallox_cloud reading65590034JSON data_65590_10:00 2
attr vallox_cloud reading65590034Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_10
attr vallox_cloud reading65590035JSON data_65590_11:00 2
attr vallox_cloud reading65590035Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_11
attr vallox_cloud reading65590036JSON data_65590_12:00 2
attr vallox_cloud reading65590036Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_12
attr vallox_cloud reading65590037JSON data_65590_13:00 2
attr vallox_cloud reading65590037Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_13
attr vallox_cloud reading65590038JSON data_65590_14:00 2
attr vallox_cloud reading65590038Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_14
attr vallox_cloud reading65590039JSON data_65590_15:00 2
attr vallox_cloud reading65590039Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_15
attr vallox_cloud reading65590040JSON data_65590_16:00 2
attr vallox_cloud reading65590040Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_16
attr vallox_cloud reading65590041JSON data_65590_17:00 2
attr vallox_cloud reading65590041Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_17
attr vallox_cloud reading65590042JSON data_65590_18:00 2
attr vallox_cloud reading65590042Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_18
attr vallox_cloud reading65590043JSON data_65590_19:00 2
attr vallox_cloud reading65590043Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_19
attr vallox_cloud reading65590044JSON data_65590_20:00 2
attr vallox_cloud reading65590044Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_20
attr vallox_cloud reading65590045JSON data_65590_21:00 2
attr vallox_cloud reading65590045Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_21
attr vallox_cloud reading65590046JSON data_65590_22:00 2
attr vallox_cloud reading65590046Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_22
attr vallox_cloud reading65590047JSON data_65590_23:00 2
attr vallox_cloud reading65590047Name EXT_CYC_OLD_WEEKLY_EVENTS_TUESDAY_23
attr vallox_cloud reading65590048JSON data_65590_00:00 3
attr vallox_cloud reading65590048Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_00
attr vallox_cloud reading65590049JSON data_65590_01:00 3
attr vallox_cloud reading65590049Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_01
attr vallox_cloud reading65590050JSON data_65590_02:00 3
attr vallox_cloud reading65590050Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_02
attr vallox_cloud reading65590051JSON data_65590_03:00 3
attr vallox_cloud reading65590051Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_03
attr vallox_cloud reading65590052JSON data_65590_04:00 3
attr vallox_cloud reading65590052Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_04
attr vallox_cloud reading65590053JSON data_65590_05:00 3
attr vallox_cloud reading65590053Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_05
attr vallox_cloud reading65590054JSON data_65590_06:00 3
attr vallox_cloud reading65590054Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_06
attr vallox_cloud reading65590055JSON data_65590_07:00 3
attr vallox_cloud reading65590055Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_07
attr vallox_cloud reading65590056JSON data_65590_08:00 3
attr vallox_cloud reading65590056Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_08
attr vallox_cloud reading65590057JSON data_65590_09:00 3
attr vallox_cloud reading65590057Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_09
attr vallox_cloud reading65590058JSON data_65590_10:00 3
attr vallox_cloud reading65590058Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_10
attr vallox_cloud reading65590059JSON data_65590_11:00 3
attr vallox_cloud reading65590059Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_11
attr vallox_cloud reading65590060JSON data_65590_12:00 3
attr vallox_cloud reading65590060Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_12
attr vallox_cloud reading65590061JSON data_65590_13:00 3
attr vallox_cloud reading65590061Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_13
attr vallox_cloud reading65590062JSON data_65590_14:00 3
attr vallox_cloud reading65590062Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_14
attr vallox_cloud reading65590063JSON data_65590_15:00 3
attr vallox_cloud reading65590063Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_15
attr vallox_cloud reading65590064JSON data_65590_16:00 3
attr vallox_cloud reading65590064Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_16
attr vallox_cloud reading65590065JSON data_65590_17:00 3
attr vallox_cloud reading65590065Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_17
attr vallox_cloud reading65590066JSON data_65590_18:00 3
attr vallox_cloud reading65590066Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_18
attr vallox_cloud reading65590067JSON data_65590_19:00 3
attr vallox_cloud reading65590067Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_19
attr vallox_cloud reading65590068JSON data_65590_20:00 3
attr vallox_cloud reading65590068Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_20
attr vallox_cloud reading65590069JSON data_65590_21:00 3
attr vallox_cloud reading65590069Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_21
attr vallox_cloud reading65590070JSON data_65590_22:00 3
attr vallox_cloud reading65590070Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_22
attr vallox_cloud reading65590071JSON data_65590_23:00 3
attr vallox_cloud reading65590071Name EXT_CYC_OLD_WEEKLY_EVENTS_WEDNESDAY_23
attr vallox_cloud reading65590072JSON data_65590_00:00 4
attr vallox_cloud reading65590072Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_00
attr vallox_cloud reading65590073JSON data_65590_01:00 4
attr vallox_cloud reading65590073Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_01
attr vallox_cloud reading65590074JSON data_65590_02:00 4
attr vallox_cloud reading65590074Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_02
attr vallox_cloud reading65590075JSON data_65590_03:00 4
attr vallox_cloud reading65590075Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_03
attr vallox_cloud reading65590076JSON data_65590_04:00 4
attr vallox_cloud reading65590076Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_04
attr vallox_cloud reading65590077JSON data_65590_05:00 4
attr vallox_cloud reading65590077Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_05
attr vallox_cloud reading65590078JSON data_65590_06:00 4
attr vallox_cloud reading65590078Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_06
attr vallox_cloud reading65590079JSON data_65590_07:00 4
attr vallox_cloud reading65590079Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_07
attr vallox_cloud reading65590080JSON data_65590_08:00 4
attr vallox_cloud reading65590080Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_08
attr vallox_cloud reading65590081JSON data_65590_09:00 4
attr vallox_cloud reading65590081Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_09
attr vallox_cloud reading65590082JSON data_65590_10:00 4
attr vallox_cloud reading65590082Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_10
attr vallox_cloud reading65590083JSON data_65590_11:00 4
attr vallox_cloud reading65590083Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_11
attr vallox_cloud reading65590084JSON data_65590_12:00 4
attr vallox_cloud reading65590084Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_12
attr vallox_cloud reading65590085JSON data_65590_13:00 4
attr vallox_cloud reading65590085Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_13
attr vallox_cloud reading65590086JSON data_65590_14:00 4
attr vallox_cloud reading65590086Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_14
attr vallox_cloud reading65590087JSON data_65590_15:00 4
attr vallox_cloud reading65590087Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_15
attr vallox_cloud reading65590088JSON data_65590_16:00 4
attr vallox_cloud reading65590088Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_16
attr vallox_cloud reading65590089JSON data_65590_17:00 4
attr vallox_cloud reading65590089Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_17
attr vallox_cloud reading65590090JSON data_65590_18:00 4
attr vallox_cloud reading65590090Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_18
attr vallox_cloud reading65590091JSON data_65590_19:00 4
attr vallox_cloud reading65590091Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_19
attr vallox_cloud reading65590092JSON data_65590_20:00 4
attr vallox_cloud reading65590092Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_20
attr vallox_cloud reading65590093JSON data_65590_21:00 4
attr vallox_cloud reading65590093Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_21
attr vallox_cloud reading65590094JSON data_65590_22:00 4
attr vallox_cloud reading65590094Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_22
attr vallox_cloud reading65590095JSON data_65590_23:00 4
attr vallox_cloud reading65590095Name EXT_CYC_OLD_WEEKLY_EVENTS_THURSDAY_23
attr vallox_cloud reading65590096JSON data_65590_00:00 5
attr vallox_cloud reading65590096Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_00
attr vallox_cloud reading65590097JSON data_65590_01:00 5
attr vallox_cloud reading65590097Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_01
attr vallox_cloud reading65590098JSON data_65590_02:00 5
attr vallox_cloud reading65590098Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_02
attr vallox_cloud reading65590099JSON data_65590_03:00 5
attr vallox_cloud reading65590099Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_03
attr vallox_cloud reading65590100JSON data_65590_04:00 5
attr vallox_cloud reading65590100Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_04
attr vallox_cloud reading65590101JSON data_65590_05:00 5
attr vallox_cloud reading65590101Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_05
attr vallox_cloud reading65590102JSON data_65590_06:00 5
attr vallox_cloud reading65590102Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_06
attr vallox_cloud reading65590103JSON data_65590_07:00 5
attr vallox_cloud reading65590103Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_07
attr vallox_cloud reading65590104JSON data_65590_08:00 5
attr vallox_cloud reading65590104Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_08
attr vallox_cloud reading65590105JSON data_65590_09:00 5
attr vallox_cloud reading65590105Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_09
attr vallox_cloud reading65590106JSON data_65590_10:00 5
attr vallox_cloud reading65590106Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_10
attr vallox_cloud reading65590107JSON data_65590_11:00 5
attr vallox_cloud reading65590107Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_11
attr vallox_cloud reading65590108JSON data_65590_12:00 5
attr vallox_cloud reading65590108Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_12
attr vallox_cloud reading65590109JSON data_65590_13:00 5
attr vallox_cloud reading65590109Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_13
attr vallox_cloud reading65590110JSON data_65590_14:00 5
attr vallox_cloud reading65590110Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_14
attr vallox_cloud reading65590111JSON data_65590_15:00 5
attr vallox_cloud reading65590111Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_15
attr vallox_cloud reading65590112JSON data_65590_16:00 5
attr vallox_cloud reading65590112Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_16
attr vallox_cloud reading65590113JSON data_65590_17:00 5
attr vallox_cloud reading65590113Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_17
attr vallox_cloud reading65590114JSON data_65590_18:00 5
attr vallox_cloud reading65590114Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_18
attr vallox_cloud reading65590115JSON data_65590_19:00 5
attr vallox_cloud reading65590115Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_19
attr vallox_cloud reading65590116JSON data_65590_20:00 5
attr vallox_cloud reading65590116Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_20
attr vallox_cloud reading65590117JSON data_65590_21:00 5
attr vallox_cloud reading65590117Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_21
attr vallox_cloud reading65590118JSON data_65590_22:00 5
attr vallox_cloud reading65590118Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_22
attr vallox_cloud reading65590119JSON data_65590_23:00 5
attr vallox_cloud reading65590119Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_23
attr vallox_cloud reading65590120JSON data_65590_00:00 6
attr vallox_cloud reading65590120Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_00
attr vallox_cloud reading65590121JSON data_65590_01:00 6
attr vallox_cloud reading65590121Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_01
attr vallox_cloud reading65590122JSON data_65590_02:00 6
attr vallox_cloud reading65590122Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_02
attr vallox_cloud reading65590123JSON data_65590_03:00 6
attr vallox_cloud reading65590123Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_03
attr vallox_cloud reading65590124JSON data_65590_04:00 6
attr vallox_cloud reading65590124Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_04
attr vallox_cloud reading65590125JSON data_65590_05:00 6
attr vallox_cloud reading65590125Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_05
attr vallox_cloud reading65590126JSON data_65590_06:00 6
attr vallox_cloud reading65590126Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_06
attr vallox_cloud reading65590127JSON data_65590_07:00 6
attr vallox_cloud reading65590127Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_07
attr vallox_cloud reading65590128JSON data_65590_08:00 6
attr vallox_cloud reading65590128Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_08
attr vallox_cloud reading65590129JSON data_65590_09:00 6
attr vallox_cloud reading65590129Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_09
attr vallox_cloud reading65590130JSON data_65590_10:00 6
attr vallox_cloud reading65590130Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_10
attr vallox_cloud reading65590131JSON data_65590_11:00 6
attr vallox_cloud reading65590131Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_11
attr vallox_cloud reading65590132JSON data_65590_12:00 6
attr vallox_cloud reading65590132Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_12
attr vallox_cloud reading65590133JSON data_65590_13:00 6
attr vallox_cloud reading65590133Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_13
attr vallox_cloud reading65590134JSON data_65590_14:00 6
attr vallox_cloud reading65590134Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_14
attr vallox_cloud reading65590135JSON data_65590_15:00 6
attr vallox_cloud reading65590135Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_15
attr vallox_cloud reading65590136JSON data_65590_16:00 6
attr vallox_cloud reading65590136Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_16
attr vallox_cloud reading65590137JSON data_65590_17:00 6
attr vallox_cloud reading65590137Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_17
attr vallox_cloud reading65590138JSON data_65590_18:00 6
attr vallox_cloud reading65590138Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_18
attr vallox_cloud reading65590139JSON data_65590_19:00 6
attr vallox_cloud reading65590139Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_19
attr vallox_cloud reading65590140JSON data_65590_20:00 6
attr vallox_cloud reading65590140Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_20
attr vallox_cloud reading65590141JSON data_65590_21:00 6
attr vallox_cloud reading65590141Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_21
attr vallox_cloud reading65590142JSON data_65590_22:00 6
attr vallox_cloud reading65590142Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_22
attr vallox_cloud reading65590143JSON data_65590_23:00 6
attr vallox_cloud reading65590143Name EXT_CYC_OLD_WEEKLY_EVENTS_SATURDAY_23
attr vallox_cloud reading65590144JSON data_65590_00:00 0
attr vallox_cloud reading65590144Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_00
attr vallox_cloud reading65590145JSON data_65590_01:00 0
attr vallox_cloud reading65590145Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_01
attr vallox_cloud reading65590146JSON data_65590_02:00 0
attr vallox_cloud reading65590146Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_02
attr vallox_cloud reading65590147JSON data_65590_03:00 0
attr vallox_cloud reading65590147Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_03
attr vallox_cloud reading65590148JSON data_65590_04:00 0
attr vallox_cloud reading65590148Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_04
attr vallox_cloud reading65590149JSON data_65590_05:00 0
attr vallox_cloud reading65590149Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_05
attr vallox_cloud reading65590150JSON data_65590_06:00 0
attr vallox_cloud reading65590150Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_06
attr vallox_cloud reading65590151JSON data_65590_07:00 0
attr vallox_cloud reading65590151Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_07
attr vallox_cloud reading65590152JSON data_65590_08:00 0
attr vallox_cloud reading65590152Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_08
attr vallox_cloud reading65590153JSON data_65590_09:00 0
attr vallox_cloud reading65590153Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_09
attr vallox_cloud reading65590154JSON data_65590_10:00 0
attr vallox_cloud reading65590154Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_10
attr vallox_cloud reading65590155JSON data_65590_11:00 0
attr vallox_cloud reading65590155Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_11
attr vallox_cloud reading65590156JSON data_65590_12:00 0
attr vallox_cloud reading65590156Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_12
attr vallox_cloud reading65590157JSON data_65590_13:00 0
attr vallox_cloud reading65590157Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_13
attr vallox_cloud reading65590158JSON data_65590_14:00 0
attr vallox_cloud reading65590158Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_14
attr vallox_cloud reading65590159JSON data_65590_15:00 0
attr vallox_cloud reading65590159Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_15
attr vallox_cloud reading65590160JSON data_65590_16:00 0
attr vallox_cloud reading65590160Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_16
attr vallox_cloud reading65590161JSON data_65590_17:00 0
attr vallox_cloud reading65590161Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_17
attr vallox_cloud reading65590162JSON data_65590_18:00 0
attr vallox_cloud reading65590162Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_18
attr vallox_cloud reading65590163JSON data_65590_19:00 0
attr vallox_cloud reading65590163Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_19
attr vallox_cloud reading65590164JSON data_65590_20:00 0
attr vallox_cloud reading65590164Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_20
attr vallox_cloud reading65590165JSON data_65590_21:00 0
attr vallox_cloud reading65590165Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_21
attr vallox_cloud reading65590166JSON data_65590_22:00 0
attr vallox_cloud reading65590166Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_22
attr vallox_cloud reading65590167JSON data_65590_23:00 0
attr vallox_cloud reading65590167Name EXT_CYC_OLD_WEEKLY_EVENTS_SUNDAY_23


attr vallox_cloud reading65591JSON data_65591_value
attr vallox_cloud reading65591Name EXT_DIGITAL_INPUT_1_MODE
attr vallox_cloud reading65592JSON data_65592_value
attr vallox_cloud reading65592Name EXT_DIGITAL_INPUT_2_MODE
attr vallox_cloud reading65593JSON data_65593_value
attr vallox_cloud reading65593Name EXT_ANALOG_INPUT_MODE
attr vallox_cloud reading65594JSON data_65594_value
attr vallox_cloud reading65594Name EXT_EXTRA_AIR_TEMP_TARGET
attr vallox_cloud reading65595JSON data_65595_value
attr vallox_cloud reading65595Name EXT_EXTRA_EXTR_FAN
attr vallox_cloud reading65596JSON data_65596_value
attr vallox_cloud reading65596Name EXT_EXTRA_SUPP_FAN
attr vallox_cloud reading655971JSON data_65597_value_hours
attr vallox_cloud reading655971Name EXT_EXTRA_TIME_HOURS
attr vallox_cloud reading655972JSON data_65597_value_minutes
attr vallox_cloud reading655972Name EXT_EXTRA_TIME_MINUTES
attr vallox_cloud reading65598JSON data_65598_value
attr vallox_cloud reading65598Map 0:no, 1:yes
attr vallox_cloud reading65598Name EXT_EXTRA_TIMER_ENABLED
attr vallox_cloud reading65598OMap 0:no, 1:yes
attr vallox_cloud reading65599JSON data_65599_value
attr vallox_cloud reading65599Name EXT_MACHINE_TYPE
attr vallox_cloud reading65600JSON data_65600_value
attr vallox_cloud reading65600Map 0:no, 1:yes
attr vallox_cloud reading65600Name EXT_DEFROST_ON
attr vallox_cloud reading65601JSON data_65601_value
attr vallox_cloud reading65601Name EXT_FILTER_CHANGE_INTERVAL
attr vallox_cloud reading65602JSON data_65602_value
attr vallox_cloud reading65602Map 0:no, 1:yes
attr vallox_cloud reading65602Name EXT_BOOST_TIMER_ENABLED
attr vallox_cloud reading65602OMap 0:no, 1:yes
attr vallox_cloud reading65603JSON data_65603_value
attr vallox_cloud reading65603Name EXT_BOOST_TIME
attr vallox_cloud reading65604JSON data_65604_value
attr vallox_cloud reading65604Name EXT_CYC_DEFROST_TEMP_PARAM
attr vallox_cloud reading65605JSON data_65605_value
attr vallox_cloud reading65605Name EXT_CYC_DEFROST_RH_OFFSET
attr vallox_cloud reading65607JSON data_65607_value
attr vallox_cloud reading65607Name EXT_CYC_EXTRA_HEATER_TYPE
attr vallox_cloud reading65608JSON data_65608_value
attr vallox_cloud reading65608Name EXT_CYC_POST_HEATER_TYPE
attr vallox_cloud reading65615JSON data_65615_value
attr vallox_cloud reading65615Name EXT_USERNAME

# Das sind die Device readings, ohne speziellen modbus Namen
attr vallox_cloud reading90001JSON devices_01___v
attr vallox_cloud reading90002JSON devices_01__id
attr vallox_cloud reading90003JSON devices_01_created
attr vallox_cloud reading90004JSON devices_01_deviceid
attr vallox_cloud reading90005JSON devices_01_lastseen
attr vallox_cloud reading90007JSON devices_01_limpMode_count
attr vallox_cloud reading90008JSON devices_01_logs_0
attr vallox_cloud reading90009JSON devices_01_logs_1
attr vallox_cloud reading90010JSON devices_01_logs_2
attr vallox_cloud reading90011JSON devices_01_logs_3
attr vallox_cloud reading90012JSON devices_01_logs_4
attr vallox_cloud reading90013JSON devices_01_logs_5
attr vallox_cloud reading90014JSON devices_01_name
attr vallox_cloud reading90015JSON devices_01_owner
attr vallox_cloud reading90016JSON devices_01_serial_number
attr vallox_cloud reading90017JSON devices_01_state
attr vallox_cloud reading90018JSON devices_01_sw_version_0
attr vallox_cloud reading90019JSON devices_01_sw_version_1
attr vallox_cloud reading90020JSON devices_01_sw_version_2
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 Januar 2019, 19:50:22
Einen schöne Abend wünsche ich allen.

Ich möchte nun noch das set Statement für die Ansteuerung der Vallox 270 über die Vallox Cloud nachliefern und ein stateformat ergänzen.

Das set01 ermöglicht es nach der Anmeldung in der Vallox Cloud die voreingestellten Profile aus zu wählen. Nach kurzer Zeit werden diese dann auf der ebenfalls in der Vallox Cloud angemeldeten KWL aktiviert.

attr vallox_cloud set01Name KWL_Set_Profil

# Das Input Mapping zeigt im FHEM die sprechenden Namen für die einzelnen Profile als pulldown Menü
attr vallox_cloud set01IMap 0:Anwesend, 1:Abwesend, 2:Stosslueften, 3:Kaminfunktion

# Die URL habe ich bereits minimiert
attr vallox_cloud set01URL https://cloud.vallox.com:443/api/devicestate/<Gerätekennung>

# setHeader1-4 sind für alle weiteren set[0-9] gültig, wobei ich momentan noch keine weiteren ausprobiert habe.
attr vallox_cloud setHeader1 Referer: https://cloud.vallox.com:443/cloudui/index.html?deviceid=<Gerätekennung>
attr vallox_cloud setHeader2 Content-Type: application/json
attr vallox_cloud setHeader3 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud setHeader4 X-Requested-With: XMLHttpRequest

# In der $val Variablen wird die Profilnummer übergeben.
attr vallox_cloud set01Data {"20545":{"value":15,"minutesflag":true,"modbus":20545,"disabled":false},"65550":{"value":$val,"modbus":65550},"65603":{"value":30,"minutesflag":true,"modbus":65603,"disabled":false}}


Modbus:
20545 - A_CYC_FIREPLACE_TIME
65550 - EXT_CYC_ACTIVE_PROFILE
65603 - EXT_BOOST_TIME


Für eine Kurzübersicht habe ich folgendes stateFormat erstellt, was dann diesen Geräteüberblick im FHEM erzeugt

DeviceOverview
vallox_cloud      innen 20 °C, Zuluft 19 °C, Abluf 10 °C, außen 7 °C Profil: home

attr vallox_cloud stateFormat {sprintf("innen %d °C, Zuluft %d °C, Abluf %d °C, außen %d °C  Profil: %s" , ReadingsVal("vallox_cloud","EXT_TEMP_NOW_EXTRACT_AIR","?"),ReadingsVal("vallox_cloud","EXT_TEMP_NOW_SUPPLY_AIR","?"),ReadingsVal("vallox_cloud","EXT_TEMP_NOW_EXHAUST_AIR","?"),ReadingsVal("vallox_cloud","EXT_TEMP_NOW_OUTDOOR_AIR","?"),ReadingsVal("vallox_cloud","EXT_CYC_ACTIVE_PROFILE","?"))}


Viel Spaß beim Testen
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 09 Januar 2019, 18:58:33
Hallo zusammen,

ich habe mal ein "shutdown restart" im FHEM gemacht und bekomme beim restart folgende Meldungen

2019.01.09 18:53:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/98_HTTPMOD.pm line 2497.
2019.01.09 18:53:39 1: PERL WARNING: Use of uninitialized value in split at ./FHEM/98_HTTPMOD.pm line 2498.
2019.01.09 18:53:39 1: PERL WARNING: Use of uninitialized value $code in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 2500.
2019.01.09 18:53:39 1: PERL WARNING: Use of uninitialized value $code in numeric eq (==) at ./FHEM/98_HTTPMOD.pm line 2501.


wenn jemand eine Idee hat...

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Januar 2019, 20:37:20
Hallo,

das ist die Funktion, die nach einem Read nach Redirects sucht. Offenbar wird die aufgerufen, obwohl gar kein erfolgreicher Read stattgefunden hat und der Header undef ist.
Anbei eine neue Version zum Testen, in der das abgefangen werden sollte.
Zudem ist ein neues Attribut useSetExtensions drin. Als Default werden setExtensions verwendet, wenn es aber mal stören sollte, kann man das Attribut auf 0 setzen und die setExtensions so abschalten.

Wenn es keine Probleme gibt, würde ich die neue Version in den nächsten Tagen einchecken.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 09 Januar 2019, 22:25:20
 :)
Habe eben auch noch ein paar templates dazu eingecheckt für hp und Epson Drucker sowie Blitzer. Quellen sind jeweils dabei, leider kann ich mangels hardware nicht alles testen ;) .
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 Januar 2019, 11:13:11
Hallo Ihr zwei.

Ich habe das HTTPMOD 09.01.2019 aktualisiert.
Die PERL Warnings beim "shutdown reboot" sind jetzt weg.
Nach dem Ausführen meiner HTTPMOD devices konnte ich keine Probleme feststellen.


Eine weitere Frage zum Auslesen von JSON Daten habe ich da noch.

Das JSON array sieht wie folgt aus:

"devices":[{"_id":"5881d8e294d6c1fc04038a1b","deviceid":"432C7775-3FDA-430A-920A-97B591B5F2C4","name":"Vallox 270","owner":"5881d8e294d6c1fc04038a1d","__v":5,"logs":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"limpMode":{"emailCount":0,"count":0},"serial_number":"0x5b5feca0","sw_version":[1,8,8],"state":"normal","lastseen":"2019-01-10T09:36:06.833Z","created":"2017-01-20T09:31:14.181Z","online":true}],"accessdevices":[],"data_created":"2019-01-10T09:36:06.828Z"}


Mein reading ist so definiert

reading00001JSON     devices
reading00001Name    A_CYC_DEVICE._ID


Und im Log finde ich das:

2019.01.10 10:55:27 5: vallox_cloud: ExtractReading A_CYC_DEVICE._ID with json devices ...
2019.01.10 10:55:27 5: vallox_cloud: ExtractReading A_CYC_DEVICE._ID with json devices did not match a key directly - trying regex match to create a list
2019.01.10 10:55:27 5: vallox_cloud: ExtractReading A_CYC_DEVICE._ID with json /^devices/ got keylist devices_01___v devices_01__id devices_01_created devices_01_deviceid devices_01_lastseen devices_01_limpMode_count devices_01_limpMode_emailCount devices_01_logs_0 devices_01_logs_1 devices_01_logs_2 devices_01_logs_3 devices_01_logs_4 devices_01_logs_5 devices_01_name devices_01_online devices_01_owner devices_01_serial_number devices_01_state devices_01_sw_version_0 devices_01_sw_version_1 devices_01_sw_version_2
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-1 sets A_CYC_DEVICE._ID-1 to 5
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-2 sets A_CYC_DEVICE._ID-2 to 5881d8e294d6c1fc04038a1b
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-3 sets A_CYC_DEVICE._ID-3 to 2017-01-20T09:31:14.181Z
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-4 sets A_CYC_DEVICE._ID-4 to 432C7775-3FDA-430A-920A-97B591B5F2C4
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-5 sets A_CYC_DEVICE._ID-5 to 2019-01-10T09:40:26.367Z
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-6 sets A_CYC_DEVICE._ID-6 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-7 sets A_CYC_DEVICE._ID-7 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-8 sets A_CYC_DEVICE._ID-8 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-9 sets A_CYC_DEVICE._ID-9 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-10 sets A_CYC_DEVICE._ID-10 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-11 sets A_CYC_DEVICE._ID-11 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-12 sets A_CYC_DEVICE._ID-12 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-13 sets A_CYC_DEVICE._ID-13 to 0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-14 sets A_CYC_DEVICE._ID-14 to Vallox 270
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-15 sets A_CYC_DEVICE._ID-15 to 1
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-16 sets A_CYC_DEVICE._ID-16 to 5881d8e294d6c1fc04038a1d
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-17 sets A_CYC_DEVICE._ID-17 to 0x5b5feca0
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-18 sets A_CYC_DEVICE._ID-18 to normal
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-19 sets A_CYC_DEVICE._ID-19 to 1
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-20 sets A_CYC_DEVICE._ID-20 to 8
2019.01.10 10:55:27 4: vallox_cloud: ExtractReading for reading00001-21 sets A_CYC_DEVICE._ID-21 to 8


Nun habe ich ja bereits fiele readings mit den sxacten Namen definiert, jedoch habe ich den Syntax für diese arrays nicht verstanden. Kann mir da bitte mal einer auf die Sprünge helfen?

Mit meinem reading werden die Werte ja einfach fortlaufend nummeriert und für die bessere Lesbarkeit müsste ich ja, nach meinem Lernstand, jeden einzelnen Wert definieren.

Für einzelne andere readings habe ich das dann ja auch schon gemacht.

reading00017JSON   data.17.value 
reading00017Name   A_CYC_MACHINE_MODEL


liefert dann

A_CYC_MACHINE_MODEL          ValloPlus 270 MV


Ich komme halt nur nicht in die arrays rein :-)

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 Januar 2019, 11:23:04
Und noch eins ;-)

reading

reading65608JSON    data.65608.value
reading65608Name    EXT_CYC_POST_HEATER_TYPE

Daten

"65608":{"value":1,"modbus":65608}

reading

EXT_CYC_POST_HEATER_TYPE     1

Log verbose 5

2019.01.10 11:10:28 5: vallox_cloud: ExtractReading EXT_CYC_POST_HEATER_TYPE with json data.65608.value ...
2019.01.10 11:10:28 5: vallox_cloud: ExtractReading EXT_CYC_POST_HEATER_TYPE with json data.65608.value did not match a key directly - trying regex match to create a list
2019.01.10 11:10:28 5: vallox_cloud: ExtractReading EXT_CYC_POST_HEATER_TYPE with json /^data.65608.value/ got keylist data_65608_value
2019.01.10 11:10:28 4: vallox_cloud: ExtractReading for reading65608-1 sets EXT_CYC_POST_HEATER_TYPE to 1


Ist hierbei die Meldung "did not match a key directly - trying regex match to create a list" richtig, oder ist mein reading nicht korrekt? Das Ergebnis stimmt ja soweit.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Januar 2019, 17:58:24
Hallo Christian,

ich empfehle eigentlich immer zunächst mal extractAllJSON zu verwenden. Dann erzeugt HTTPMOD für jeden Eintrag ein Reading und der Name des Readings entspricht dem String, der auch für ein direktes Abfragen verwendet werden kann. Damit tut man sich leichter.
Deine Readings sind tatsächlich nicht so definiert, wie HTTPMOD es erwartet. Dass es trotzdem klappt, liegt daran, dass auch als regex die richtigen Werte getroffen werden.
HTTPMOD verkettet die JSON-Namen einer Hierarchie mit einem "_", nicht mit einem Punkt.
Du müsstest also Readings z.B. als devices_01_deviceid definieren. Verwirrend ist dabei, dass der Unterstich auch schon als Teil der Namen verwendet wird.

Wenn HTTPMOD Deinen JSON-Namen nicht kennt, versucht es ihn als regulären Ausdruck zu verwenden und mit allen tatsächlich bekannten Namen zu vergleichen. Das ergebnis der passenden Namen siehst Du in Deinem Log:
ExtractReading A_CYC_DEVICE._ID with json /^devices/ got keylist ...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 Januar 2019, 15:03:47
Zitat
ich empfehle eigentlich immer zunächst mal extractAllJSON zu verwenden. Dann erzeugt HTTPMOD für jeden Eintrag ein Reading und der Name des Readings entspricht dem String, der auch für ein direktes Abfragen verwendet werden kann. Damit tut man sich leichter.
Okay, das klappt besser. Jedoch hatte ich auch schon so gestartet, aber die Umsetzung durch "enforceGoodReadingNames 1" nicht berücksichtigt.

Zitat
Verwirrend ist dabei, dass der Unterstich auch schon als Teil der Namen verwendet wird.
Die Unterstriche im reading Name habe ich von hier https://github.com/yozik04/vallox_websocket_api/blob/master/vallox_websocket_api/constants.py (https://github.com/yozik04/vallox_websocket_api/blob/master/vallox_websocket_api/constants.py) übernommen.

Noch verwirrender ist für mich folgendes, was ich durch ausprobieren ermittelt habe.
Der JSON Name lautet mit "enforceGoodReadingNames 1" so "data_65590_22_00_5", kann jedoch nicht als reading65590118JSON angegeben werden, da es dann nicht gefunden wird.  Trage ich jedoch folgendes ein, wird es direkt zugeordnet.

attr vallox_cloud reading65590118JSON    data_65590_22:00 5
attr vallox_cloud reading65590118Name   EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_22

Was dann folgendes im Log ergibt und für mich gut aussieht

2019.01.11 15:04:44 5: vallox_cloud: ExtractReading EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_22 with json data_65590_22:00 5 ...
2019.01.11 15:04:44 4: vallox_cloud: ExtractReading for reading65590118-1 sets EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_22 to away


Bei dem Auslesen von JSON für devices gibt es tatsächlich Namen wie "__v" und "_id", was das soll kann sicherlich nur der Hersteller sagen.

Die neuen readings habe ich hier aktualisiert
Zitat von: ch.eick am 03 Januar 2019, 11:12:41

Gruß und Dank
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Januar 2019, 21:18:18
Hallo Christian,

ja das mit JSON Strings, die keine gültigen Reading-Namen sind, ist verwirrend.
HTTPMOD verwendet die Namen so wie sie die JSON-Bibliothek liefert und verkettet sie mit einem Unterstrich.
Deshalb muss es z.B.

attr vallox_cloud reading01JSON data_65590_22:00 5
attr vallox_cloud reading01Name EXT_CYC_OLD_WEEKLY_EVENTS_FRIDAY_22

lauten. Das entsteht direkt aus der Verkettung der JSON-Namen in einer Hierarchie, so wie es im JSON-Text eben drinsteht.

Da data_65590_22:00 5 aber kein gültiger Name für ein Reading ist, macht die Fhem-Funktion, die bei enforceGoodReadingNames aufgerufen wird daraus ein Reading mit Namen data_65590_22_00_5.
Hier werden einfach alle unerlaubten Zeichen durch einen _ ersetzt.

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Januar 2019, 15:40:16
Hallo,

ich hatte da noch eine Idee um das mit komplexeren JSON Daten einfacher zu machen:

wenn man extractAllReadings oder get01ExtractAllReadings nicht auf 1 sondern auf 2 setzt, dann erzeugt HTTPMOD beim ersten Lesen die readingXXName und readingXXJSON attribute und löscht dann das extractAllJSON attribut automatisch.
Das sollte die Arbiet in solchen Fällen erleichtern.

Anbei eine neue Version zum Testen.

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 13 Januar 2019, 11:59:04
Hallo Stefan,

mein erster Test ergibt folgendes:

1) ModuleVersion    3.5.7 - 9.1.2019

2) Unter userattr habe ich für get**ExtractAllReadings noch :0,1,2 ergänzt

3) beim Testlauf wurden dann fast alle JSON readings angelegt. Es fehlen nur noch die readings für den value.

TestDaten

httpbody
{"errors":null,"data":{"17":{"value":"ValloPlus 270 MV","modbus":17},"4353":{"value":30,"modbus":4353},"4354":{"value":20,"modbus":4354},"4355":{"value":9,"modbus":4355},"4356":{"value":7,"modbus":4356},"4357":{"value":16,"modbus":4357},"4358":{"value":17,"modbus":4358},"4359":{"value":1,"modbus":4359},"4360":{"value":0,"modbus":4360},"4363":{"value":57,"modbus":4363},"4364":{"value":0,"modbus":4364},"4609":{"value":0,"modbus":4609},"4615":{"value":1,"modbus":4615},"4616":{"value":0,"modbus":4616},"5121":{"value":50,"modbus":5121},"5122":{"value":50,"modbus":5122},"5124":{"value":0,"modbus":5124},"5125":{"value":0,"modbus":5125},"5126":{"value":0,"modbus":5126},"20482":{"value":1,"modbus":20482},"20483":{"value":192,"modbus":20483},"20487":{"value":50,"modbus":20487},"20488":{"value":50,"modbus":20488},"20490":{"value":58,"modbus":20490},"20491":{"value":900,"modbus":20491},"20499":{"value":1,"modbus":20499},"20500":{"value":0,"modbus":20500},"20501":{"value":20,"modbus":20501},"20505":{"value":1,"modbus":20505},"20506":{"value":0,"modbus":20506},"20507":{"value":30,"modbus":20507},"20511":{"value":1,"modbus":20511},"20512":{"value":0,"modbus":20512},"20513":{"value":75,"modbus":20513},"20517":{"value":0,"modbus":20517},"20524":{"value":1,"modbus":20524},"20542":{"value":1,"modbus":20542},"20543":{"value":0,"modbus":20543},"20545":{"value":15,"modbus":20545},"20549":{"value":0,"modbus":20549},"20553":{"value":0,"modbus":20553},"21765":{"value":0,"modbus":21765},"21767":{"value":1,"modbus":21767},"21768":{"value":1,"modbus":21768},"21769":{"value":true,"modbus":21769},"32771":{"value":0,"modbus":32771},"32772":{"value":0,"modbus":32772},"32773":{"value":0,"modbus":32773},"32774":{"value":0,"modbus":32774},"65537":{"value":1,"modbus":65537},"65538":{"value":0,"modbus":65538},"65539":{"value":"1.8.8","modbus":65539},"65540":{"value":20,"modbus":65540},"65541":{"value":17,"modbus":65541},"65542":{"value":7,"modbus":65542},"65543":{"value":9,"modbus":65543},"65544":{"value":1,"modbus":65544},"65545":{"value":1,"modbus":65545},"65548":{"value":1533013152,"modbus":65548},"65549":{"value":"2018-10-19T21:00:00.000Z"},"65550":{"value":0,"modbus":65550},"65553":{"value":1164},"65554":{"value":{"years":2,"hours":74}},"65557":{"value":1,"marks":{"05:00 1":"home","06:00 1":"home","07:00 1":"boost","08:00 1":"home","09:00 1":"away","18:00 1":"home","22:00 1":"away","05:00 2":"home","06:00 2":"home","07:00 2":"boost","08:00 2":"home","09:00 2":"away","18:00 2":"home","22:00 2":"away","05:00 3":"home","06:00 3":"home","07:00 3":"boost","08:00 3":"home","09:00 3":"away","18:00 3":"home","22:00 3":"away","05:00 4":"home","06:00 4":"home","07:00 4":"boost","08:00 4":"home","09:00 4":"away","18:00 4":"home","22:00 4":"away","05:00 5":"home","06:00 5":"home","07:00 5":"boost","08:00 5":"home","09:00 5":"away","18:00 5":"home","22:00 5":"away","05:00 6":"away","09:00 6":"boost","10:00 6":"boost","11:00 6":"home","14:00 6":"away","18:00 6":"home","22:00 6":"away","05:00 0":"away","09:00 0":"boost","10:00 0":"boost","11:00 0":"home","14:00 0":"away","18:00 0":"home","22:00 0":"away"}},"65558":{"value":[]},"65559":{"value":false,"modbus":65559},"65560":{"value":true,"modbus":65560},"65561":{"value":"2019-01-13T11:38+00:00"},"65562":{"value":"2019-01-13"},"65564":{"value":false,"modbus":65564},"65565":[23391,60576,5,1,8255,47889,3097,110],"65568":{"value":50,"amount":1170},"65569":{"value":37,"amount":977},"65572":{"value":0,"modbus":65572},"65579":{"value":15,"modbus":65579},"65580":{"value":15,"modbus":65580},"65581":{"value":15,"modbus":65581},"65590":{"05:00 1":"home","06:00 1":"home","07:00 1":"boost","08:00 1":"home","09:00 1":"away","18:00 1":"home","22:00 1":"away","05:00 2":"home","06:00 2":"home","07:00 2":"boost","08:00 2":"home","09:00 2":"away","18:00 2":"home","22:00 2":"away","05:00 3":"home","06:00 3":"home","07:00 3":"boost","08:00 3":"home","09:00 3":"away","18:00 3":"home","22:00 3":"away","05:00 4":"home","06:00 4":"home","07:00 4":"boost","08:00 4":"home","09:00 4":"away","18:00 4":"home","22:00 4":"away","05:00 5":"home","06:00 5":"home","07:00 5":"boost","08:00 5":"home","09:00 5":"away","18:00 5":"home","22:00 5":"away","05:00 6":"away","09:00 6":"boost","10:00 6":"boost","11:00 6":"home","14:00 6":"away","18:00 6":"home","22:00 6":"away","05:00 0":"away","09:00 0":"boost","10:00 0":"boost","11:00 0":"home","14:00 0":"away","18:00 0":"home","22:00 0":"away"},"65591":{"value":0,"modbus":65591},"65592":{"value":0,"modbus":65592},"65593":{"value":0,"modbus":65593},"65594":{"value":15,"modbus":65594},"65595":{"value":50,"modbus":65595},"65596":{"value":50,"modbus":65596},"65597":{"value":{"hours":0,"minutes":10},"modbus":65597},"65598":{"value":1,"modbus":65598},"65599":{"value":"3722","modbus":65599},"65600":{"value":false,"modbus":65600},"65601":{"value":12,"modbus":65601},"65602":{"value":1,"modbus":65602},"65603":{"value":30,"modbus":65603},"65604":{"value":8,"modbus":65604},"65605":{"value":0,"modbus":65605},"65607":{"value":0,"modbus":65607},"65608":{"value":1,"modbus":65608},"65609":{"value":null,"modbus":65609},"65615":{"value":"<meine Mail Adresse>","modbus":65615},"131082":{"value":0,"modbus":131082},"200980":{"value":57,"modbus":200980}},"devices":[{"_id":"5881d8e294d6c1fc04038a1b","deviceid":"432C7775-3FDA-430A-920A-97B591B5F2C4","name":"Vallox 270","owner":"5881d8e294d6c1fc04038a1d","__v":5,"logs":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0},"limpMode":{"emailCount":0,"count":0},"serial_number":"0x5b5feca0","sw_version":[1,8,8],"state":"normal","lastseen":"2019-01-13T10:36:43.224Z","created":"2017-01-20T09:31:14.181Z","online":true}],"accessdevices":[],"data_created":"2019-01-13T10:36:43.215Z"}


erkannte readings

attr vallox_cloud reading100JSON data_20501_modbus
attr vallox_cloud reading100Name data_20501_modbus
attr vallox_cloud reading101JSON data_17_modbus
attr vallox_cloud reading101Name data_17_modbus
attr vallox_cloud reading102JSON data_65608_modbus
attr vallox_cloud reading102Name data_65608_modbus
attr vallox_cloud reading103JSON data_20543_modbus
attr vallox_cloud reading103Name data_20543_modbus
attr vallox_cloud reading104JSON data_created
attr vallox_cloud reading104Name data_created
attr vallox_cloud reading105JSON data_4354_modbus
attr vallox_cloud reading105Name data_4354_modbus
attr vallox_cloud reading106JSON data_4355_modbus
attr vallox_cloud reading106Name data_4355_modbus
attr vallox_cloud reading107JSON data_21769_modbus
attr vallox_cloud reading107Name data_21769_modbus
attr vallox_cloud reading108JSON data_131082_modbus
attr vallox_cloud reading108Name data_131082_modbus
attr vallox_cloud reading109JSON data_65597_modbus
attr vallox_cloud reading109Name data_65597_modbus
attr vallox_cloud reading110JSON data_65542_modbus
attr vallox_cloud reading110Name data_65542_modbus
attr vallox_cloud reading111JSON data_131082_value
attr vallox_cloud reading111Name data_131082_value
attr vallox_cloud reading112JSON data_65545_modbus
attr vallox_cloud reading112Name data_65545_modbus
attr vallox_cloud reading113JSON data_20483_modbus
attr vallox_cloud reading113Name data_20483_modbus
attr vallox_cloud reading114JSON data_4356_modbus
attr vallox_cloud reading114Name data_4356_modbus
attr vallox_cloud reading115JSON data_65565_1
attr vallox_cloud reading115Name data_65565_1
attr vallox_cloud reading116JSON data_65565_7
attr vallox_cloud reading116Name data_65565_7
attr vallox_cloud reading117JSON data_20513_modbus
attr vallox_cloud reading117Name data_20513_modbus
attr vallox_cloud reading118JSON data_4358_modbus
attr vallox_cloud reading118Name data_4358_modbus
attr vallox_cloud reading119JSON data_20482_modbus
attr vallox_cloud reading119Name data_20482_modbus
attr vallox_cloud reading120JSON data_21768_modbus
attr vallox_cloud reading120Name data_21768_modbus
attr vallox_cloud reading121JSON data_5124_modbus
attr vallox_cloud reading121Name data_5124_modbus
attr vallox_cloud reading122JSON data_20511_modbus
attr vallox_cloud reading122Name data_20511_modbus
attr vallox_cloud reading123JSON data_65564_modbus
attr vallox_cloud reading123Name data_65564_modbus
attr vallox_cloud reading124JSON data_20507_modbus
attr vallox_cloud reading124Name data_20507_modbus
attr vallox_cloud reading125JSON data_65543_modbus
attr vallox_cloud reading125Name data_65543_modbus
attr vallox_cloud reading126JSON data_20491_modbus
attr vallox_cloud reading126Name data_20491_modbus
attr vallox_cloud reading127JSON data_65599_modbus
attr vallox_cloud reading127Name data_65599_modbus
attr vallox_cloud reading128JSON data_4364_modbus
attr vallox_cloud reading128Name data_4364_modbus
attr vallox_cloud reading129JSON data_65565_0
attr vallox_cloud reading129Name data_65565_0
attr vallox_cloud reading130JSON data_65603_modbus
attr vallox_cloud reading130Name data_65603_modbus
attr vallox_cloud reading131JSON data_4615_modbus
attr vallox_cloud reading131Name data_4615_modbus
attr vallox_cloud reading132JSON data_20499_modbus
attr vallox_cloud reading132Name data_20499_modbus
attr vallox_cloud reading133JSON data_65594_modbus
attr vallox_cloud reading133Name data_65594_modbus
attr vallox_cloud reading134JSON data_65565_5
attr vallox_cloud reading134Name data_65565_5
attr vallox_cloud reading135JSON data_65537_modbus
attr vallox_cloud reading135Name data_65537_modbus
attr vallox_cloud reading136JSON data_65604_modbus
attr vallox_cloud reading136Name data_65604_modbus
attr vallox_cloud reading137JSON data_200980_modbus
attr vallox_cloud reading137Name data_200980_modbus
attr vallox_cloud reading138JSON data_65593_modbus
attr vallox_cloud reading138Name data_65593_modbus
attr vallox_cloud reading139JSON data_200980_value
attr vallox_cloud reading139Name data_200980_value
attr vallox_cloud reading140JSON data_65615_modbus
attr vallox_cloud reading140Name data_65615_modbus
attr vallox_cloud reading141JSON data_20542_modbus
attr vallox_cloud reading141Name data_20542_modbus
attr vallox_cloud reading142JSON data_65598_modbus
attr vallox_cloud reading142Name data_65598_modbus
attr vallox_cloud reading143JSON data_65592_modbus
attr vallox_cloud reading143Name data_65592_modbus
attr vallox_cloud reading144JSON devices_01_limpMode_emailCount
attr vallox_cloud reading144Name devices_01_limpMode_emailCount
attr vallox_cloud reading145JSON data_65568_amount
attr vallox_cloud reading145Name data_65568_amount
attr vallox_cloud reading146JSON data_65565_2
attr vallox_cloud reading146Name data_65565_2
attr vallox_cloud reading147JSON data_32773_modbus
attr vallox_cloud reading147Name data_32773_modbus
attr vallox_cloud reading148JSON data_20517_modbus
attr vallox_cloud reading148Name data_20517_modbus
attr vallox_cloud reading149JSON data_65557_value
attr vallox_cloud reading149Name data_65557_value
attr vallox_cloud reading150JSON data_65548_modbus
attr vallox_cloud reading150Name data_65548_modbus
attr vallox_cloud reading151JSON data_20487_modbus
attr vallox_cloud reading151Name data_20487_modbus
attr vallox_cloud reading152JSON data_32772_modbus
attr vallox_cloud reading152Name data_32772_modbus
attr vallox_cloud reading153JSON data_20545_modbus
attr vallox_cloud reading153Name data_20545_modbus
attr vallox_cloud reading154JSON data_65559_modbus
attr vallox_cloud reading154Name data_65559_modbus
attr vallox_cloud reading155JSON data_65580_modbus
attr vallox_cloud reading155Name data_65580_modbus
attr vallox_cloud reading156JSON data_65601_modbus
attr vallox_cloud reading156Name data_65601_modbus
attr vallox_cloud reading157JSON data_5126_modbus
attr vallox_cloud reading157Name data_5126_modbus
attr vallox_cloud reading158JSON data_65572_modbus
attr vallox_cloud reading158Name data_65572_modbus
attr vallox_cloud reading159JSON data_20490_modbus
attr vallox_cloud reading159Name data_20490_modbus
attr vallox_cloud reading160JSON data_32771_modbus
attr vallox_cloud reading160Name data_32771_modbus
attr vallox_cloud reading161JSON data_65591_modbus
attr vallox_cloud reading161Name data_65591_modbus
attr vallox_cloud reading162JSON data_65540_modbus
attr vallox_cloud reading162Name data_65540_modbus
attr vallox_cloud reading163JSON data_65579_modbus
attr vallox_cloud reading163Name data_65579_modbus
attr vallox_cloud reading164JSON data_65609_modbus
attr vallox_cloud reading164Name data_65609_modbus
attr vallox_cloud reading165JSON data_20553_modbus
attr vallox_cloud reading165Name data_20553_modbus
attr vallox_cloud reading166JSON data_4359_modbus
attr vallox_cloud reading166Name data_4359_modbus
attr vallox_cloud reading167JSON data_65539_modbus
attr vallox_cloud reading167Name data_65539_modbus
attr vallox_cloud reading168JSON data_65569_amount
attr vallox_cloud reading168Name data_65569_amount
attr vallox_cloud reading169JSON data_65565_4
attr vallox_cloud reading169Name data_65565_4
attr vallox_cloud reading170JSON data_4357_modbus
attr vallox_cloud reading170Name data_4357_modbus
attr vallox_cloud reading171JSON data_65541_modbus
attr vallox_cloud reading171Name data_65541_modbus
attr vallox_cloud reading172JSON data_65581_modbus
attr vallox_cloud reading172Name data_65581_modbus
attr vallox_cloud reading173JSON data_20524_modbus
attr vallox_cloud reading173Name data_20524_modbus
attr vallox_cloud reading174JSON data_4353_modbus
attr vallox_cloud reading174Name data_4353_modbus
attr vallox_cloud reading175JSON data_4616_modbus
attr vallox_cloud reading175Name data_4616_modbus
attr vallox_cloud reading176JSON data_5121_modbus
attr vallox_cloud reading176Name data_5121_modbus
attr vallox_cloud reading177JSON data_4360_modbus
attr vallox_cloud reading177Name data_4360_modbus
attr vallox_cloud reading178JSON data_5125_modbus
attr vallox_cloud reading178Name data_5125_modbus
attr vallox_cloud reading179JSON data_5122_modbus
attr vallox_cloud reading179Name data_5122_modbus
attr vallox_cloud reading180JSON data_20505_modbus
attr vallox_cloud reading180Name data_20505_modbus
attr vallox_cloud reading181JSON data_21765_modbus
attr vallox_cloud reading181Name data_21765_modbus
attr vallox_cloud reading182JSON data_65607_modbus
attr vallox_cloud reading182Name data_65607_modbus
attr vallox_cloud reading183JSON data_65550_modbus
attr vallox_cloud reading183Name data_65550_modbus
attr vallox_cloud reading184JSON data_65600_modbus
attr vallox_cloud reading184Name data_65600_modbus
attr vallox_cloud reading185JSON data_20512_modbus
attr vallox_cloud reading185Name data_20512_modbus
attr vallox_cloud reading186JSON data_65565_3
attr vallox_cloud reading186Name data_65565_3
attr vallox_cloud reading187JSON data_65560_modbus
attr vallox_cloud reading187Name data_65560_modbus
attr vallox_cloud reading188JSON data_65602_modbus
attr vallox_cloud reading188Name data_65602_modbus
attr vallox_cloud reading189JSON data_65538_modbus
attr vallox_cloud reading189Name data_65538_modbus
attr vallox_cloud reading190JSON data_21767_modbus
attr vallox_cloud reading190Name data_21767_modbus
attr vallox_cloud reading191JSON data_20506_modbus
attr vallox_cloud reading191Name data_20506_modbus
attr vallox_cloud reading192JSON data_32774_modbus
attr vallox_cloud reading192Name data_32774_modbus
attr vallox_cloud reading193JSON data_65605_modbus
attr vallox_cloud reading193Name data_65605_modbus
attr vallox_cloud reading194JSON data_20500_modbus
attr vallox_cloud reading194Name data_20500_modbus
attr vallox_cloud reading195JSON devices_01_online
attr vallox_cloud reading195Name devices_01_online
attr vallox_cloud reading196JSON data_20488_modbus
attr vallox_cloud reading196Name data_20488_modbus
attr vallox_cloud reading197JSON data_4609_modbus
attr vallox_cloud reading197Name data_4609_modbus
attr vallox_cloud reading198JSON data_4363_modbus
attr vallox_cloud reading198Name data_4363_modbus
attr vallox_cloud reading199JSON data_65595_modbus
attr vallox_cloud reading199Name data_65595_modbus
attr vallox_cloud reading200JSON data_65596_modbus
attr vallox_cloud reading200Name data_65596_modbus
attr vallox_cloud reading201JSON data_65544_modbus
attr vallox_cloud reading201Name data_65544_modbus
attr vallox_cloud reading202JSON data_20549_modbus
attr vallox_cloud reading202Name data_20549_modbus
attr vallox_cloud reading203JSON data_65565_6
attr vallox_cloud reading203Name data_65565_6


Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Januar 2019, 13:16:12
Hallo Christian,

da muss bei Deinem Test etwas schief gelaufen sein.
Hast Du eventuell noch alte Attribute für Objekte drin gehabt?

HTTPMOD erzeugt keine neuen Attribute, wenn es schon ein Attribut gibt, das den gleichen JSON-Namen referenziert. Bei Verbose 5 siehst Du das dann auch im Log.

Ich habe gerade Deine Testdaten in eine Datei kopiert und dann mit file:// als URL darauf zugegriffen.
Bei mir erzeugt er Attribute mit Nummern von 100 bis 414 und es sind sehr viele Values dabei.

Falls es doch nicht an bestehenden Attributen liegt, wäre ein Log mit verbose 5 sehr hilfreich.

Gruss / vielen Dank
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 13 Januar 2019, 15:30:47
Okay, sorry,

ich habe es an meinem bestehenden device getestet und Du hast recht, ich hatte natürlich sehr viele bereits definiert.
Dann sehe ich ja jetzt was eventuell noch fehlt ;-) Die data_*****_modbus brauche ich erstmal nicht, da ich ja die modbus Adresse bereits im reading Namen mit aufgenommen habe. Für die Analyse spart das jedoch jetzt eine Menge Arbeit.

Kann man ein reading eigentlich auch umbenennen? Das habe ich in der Doku noch nicht gefunden.

An wen könnte ich denn ein Template schicken? Das finde ich für die Verbreitung in der FHEM Gemeine und den Einstieg von neuen Mitstreitern echt eine Tolle Idee. Gemeinsam sind wir stark :-)

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: det. am 18 Januar 2019, 11:46:57
@ all -Anfrage zu ResMed,

gibt es einen wissenden Mitbürger, der an der Anzeige der Schlafdaten von https://myair.resmed.eu/
(https://myair.resmed.eu/)Interesse und die nötigen Kenntnisse hat? Scheitere leider schon bei der Authentifizierung....
HTTP/1.1 200 OK
Date: Fri, 18 Jan 2019 10:36:59 GMT
Server: Microsoft-IIS/8.5
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Expires: -1
Vary: Accept-Encoding
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
X-FRAME-OPTIONS: SAMEORIGIN
Set-Cookie: ASP.NET_SessionId=ulm50nlmpkqpn54berpqdjkp; path=/; secure; HttpOnly
Set-Cookie: LocalizationSettings=CurrentMyAirLocale=en-GB; expires=Thu, 11-Dec-2155 10:36:59 GMT; path=/; secure; HttpOnly
Set-Cookie: resmed-myair-country=resmed-myair-country=12; expires=Sun, 26-Sep-2032 09:36:59 GMT; path=/; secure; HttpOnly
Set-Cookie: resmed-myair-instance=resmed-myair-instance=2; expires=Sun, 26-Sep-2032 09:36:59 GMT; path=/; secure; HttpOnly
Set-Cookie: LB_persistent_member_cookie=302222858.20480.0000; path=/; Httponly
Content-Encoding: gzip
Connection: close



Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 19 Januar 2019, 17:36:42
Hallo det.

Schau bitte mal hier, da habe ich viele Schritte als Liste bereits aufgeführt.
Zitat von: ch.eick am 14 Januar 2019, 13:31:56

Die Vorgehensweise ist immer die gleiche... und bereits in diesem Verlauf frisch für die Vallox Cloud beschrieben.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 09 Februar 2019, 21:50:40
Hallo zusammen.

Ich wollte die DWD-Warnungen im JSON-format von
attr Wetterwarner getURL https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json
attr Wetterwarner get01JSON warnings_<regionID>
attr Wetterwarner get01Name warn

holen. Das geht mit den JSON-Object-Values dank
attr Wetterwarner preProcessRegex s/warnWetter..............|\);|\t|\n|\r//g
auch ganz gut, danke schon einmal dafür. Aber ich bekomme es einfach nicht hin die Readings-Namen so zu formatieren, dass die JSON-Object-Namen darin vorkommen. Anstatt:
"Wetterwarner warn-1 Es treten Sturmb�en...." und "Wetterwarner warn-2 1549...." hätte ich lieber gerne:
"Wetterwarner warn_01_headline Es treten Sturmb�en...." und "Wetterwarner warn_01_start 1549...." oder so ähnlich.
Ich habe jetzt schon sooooo viel gelesen und probiert aber ich bekomme es einfach nicht hin. Mein fhem.log überschreitet mittlerweile die Grenze zu gigantisch (verbose 5). Kann es sein, dass es nur mit getXXRegex nicht aber mit getXXJSON geht? Obwohl: Im log unter "got keylist" steht eigentlich alles drin. ¯\_(ツ)_/¯
Könnt Ihr mir bitte einen Tip geben?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Februar 2019, 22:57:49
Hallo

Meinst Du so was wie

define Wetterwarner HTTPMOD https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json 0
attr Wetterwarner enableControlSet 1
attr Wetterwarner preProcessRegex s/warnWetter..............|\);;|\t|\n|\r//g
attr Wetterwarner reading01JSON warnings_116065000_01_regionName
attr Wetterwarner reading01Name Region
attr Wetterwarner reading02JSON warnings_116065000_01_state
attr Wetterwarner reading02Name Bundesland
attr Wetterwarner reading03JSON warnings_116065000_01_headline
attr Wetterwarner reading03Name Titel


Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 10 Februar 2019, 00:33:33
nein, so legst du die Readings ja manuell an. Die Anzahl ändert sich aber immer. Mit reading01JSON warnings_116065000 hat HTTPMOD die Readings bei mir ja automatisch angelegt. Je nach dem, welche JSON-Objekte enthalten waren. Mal mit Hinweisen, die nicht immer da sind oder mal mehrere Warnungen gleichzeitig. Das funktioniert ja prima und soll auch so bleiben.
Ich möchte die Namen der Readings (nicht die Werte) jetzt aber so formatieren, das sie nicht nur eine fortlaufende Nummer erhalten. Sie sollen die Warnung-Nummer und JSON-Objekt-Namen enthalten:
Erste Warnung, erstes Objekt (z.B.: description), zweites Objekt (z.B.: end), Zweite Warnung, erstes Objekt (z.B.: description)...:
warn-01-description, warn-01-end, warn-02-description ...
UND im Prinzip macht HTTPMOD so etwas ja auch schon. Im log:
2019.02.09 08:37:43.387 5: Wetterwarner: ExtractReading warn with json warnings_116065000 did not match a key directly - trying regex match to create a list
2019.02.09 08:37:43.428 5: Wetterwarner: ExtractReading warn with json /^warnings_116065000/ got keylist warnings_116065000_01_description warnings_116065000_01_end warnings_116065000_01_event warnings_116065000_01_headline warnings_116065000_01_instruction warnings_116065000_01_level warnings_116065000_01_regionName warnings_116065000_01_start warnings_116065000_01_state warnings_116065000_01_stateShort warnings_116065000_01_type warnings_116065000_02_description ....

Bitte beachten: warnings_116065000_01_description .... warnings_116065000_02_description ....
Ich hoffe jetzt habe ich besser erklärt, wie ich es meine.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hubi22 am 10 Februar 2019, 11:29:57
Hallo

bei der Abfrage auf Donnerwetter bekomme ich folgenden Wert in LAST_ERROR:

https://www.donnerwetter.de/pollenflug/broeckel/DE14995.html: Can't connect(2) to https://www.donnerwetter.de:443: SSL connect attempt failed error:14077102:SSL routines:SSL23_GET_SERVER_HELLO:unsupported protocol

Hat jmd bitte einen Tipp wie ich den Fehler beseitigen kann?

Gruß, Hubi
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Februar 2019, 21:20:33
Hallo mar3d@RPi3,

der Mechanismus, der in Deiner Konfiguration die Readings automatisch anlegt, funktioniert folgendermassen:
Wenn der für das Parsen angegebene JSON-String nicht existiert, sucht HTTPMOD per regex-Match alle JSON-Objekte zu finden, die matchen.
Die Objekte werden dabei wie auch bei extractAllJSON durch Verketten der Hierarchie mit _ erzeugt.
Das Ergebnis ist eine Liste und daraus werden dann die am Ende durchnummerierten Namen.
Das ist leider keine zuverlässige Methode für Deinen Fall. Es gibt keine Garantie, dass eine bestimmte Listenposition immer die gleiche Bedeutung hat.

Da die Antwort des Servers alle Regionen enthält, ist vermutlich auch ein extractAllJSON keine sinnvoll Option für Dich. Was Du bräuchtest, wäre eine Art extractAllJSONFrom. Also ein Feature, das alle Objekte ab einer vorgegebenen Hierarchie automatisch in Readings umwandelt.
Das nehme ich gerne auf die Wunschliste auf. Bisher gibt es das aber nicht.

Die vermutlich vernünftigste Lösung ist deshalb doch das manuelle Definieren aller potentiellen Readings (vorsorglich für z.B. 10 Meldungen einer Region) also als reading03JSON warnings_116065000_01_headline, reading03JSON warnings_116065000_02_headline usw. für alle gewünschten Objekte.
Wenn dann bestimmte Objekte nicht existieren, werden sie auch nicht zu Readings und alte Readings könnte man per DeleteIfUnmatched oder MaxAge entfernen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Februar 2019, 21:21:59
Hallo Hubi22,

ich kann den Fehler (leider) nicht nachvollziehen.
Bei mir kommt für die URL eine Seite mit
<p>You don't have permission to access /pollenflug/broeckel/DE14995.html
als Antwort.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Schlimbo am 12 Februar 2019, 21:48:33
Hallo Stefan,
bekomme seit dem letzten Update von HTTPMOD folgende Meldung im Log:
2019.02.12 21:07:25.715 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/98_HTTPMOD.pm line 2683.
2019.02.12 21:07:25.715 1: stacktrace:
2019.02.12 21:07:25.715 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (2683)
2019.02.12 21:07:25.716 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (606)
2019.02.12 21:07:25.716 1:     main::__ANON__                      called by fhem.pl (739)
2019.02.12 21:09:25.734 1: PERL WARNING: Use of uninitialized value in numeric eq (==) at ./FHEM/98_HTTPMOD.pm line 2683.
2019.02.12 21:09:25.734 1: stacktrace:
2019.02.12 21:09:25.734 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (2683)
2019.02.12 21:09:25.735 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (606)
2019.02.12 21:09:25.735 1:     main::__ANON__                      called by fhem.pl (739)

Hast du eine Idee an was das liegen könnte?

Gruß Schlimbo
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 12 Februar 2019, 22:23:15
Danke StefanStrobel,

für die ausführliche Antwort und die Aufnahme in die Wunschliste. Ich werde mir also nach deinem Muster behelfen und verbleibe gespannt lauschend.

Gruß mar3d
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Februar 2019, 20:56:22
Hallo,

anbei eine neue Version zum Testen.
Die Warnung aus Zeile 2683 sollte damit behoben sein und es gibt ein neues Attribut extractAllJSONFilter.
Wenn man extractAllJSON auf 1 oder 2 setzt und gleichzeitig extractAllJSONFilter z.B. auf 105362000, dann werden nur solche Readings bzw. Attribute erzeugt, bei denen der Filter als Regex matcht.

Anwendungsbeispiel:


define Wetterwarner HTTPMOD https://www.dwd.de/DWD/warnungen/warnapp/json/warnings.json 0
attr Wetterwarner enableControlSet 1
attr Wetterwarner extractAllJSON 1
attr Wetterwarner extractAllJSONFilter 105362000
attr Wetterwarner preProcessRegex s/warnWetter..............|\);;|\t|\n|\r//g


dann ein set Wetterwarner reread

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 13 Februar 2019, 22:40:33
wow, JSON-Objekt-Namen werden zu Reading-Namen. Das sieht sehr gut aus, danke!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Schlimbo am 14 Februar 2019, 05:52:59
Hallo Stefan,
danke, mit der Version von gestern gibt es keine Warnungen mehr.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 14 Februar 2019, 07:57:28
Habe das mit dem DWD auch mal angetestet. Zwei Fragen dazu:
- Die Formatierung der Grad-Angaben paßt bei mir nicht (es erscheint ein Sonderzeichen-Fragezeichen). Liegt das ggf. an der Lokalisierung des OS?
- (Kann sein, dass das schon irgendwo steht, aber vielleicht hat das jemand ohne große Sucherei parat): Wie kommt man an eine passende Ortsangabe, habe beim DWD auf die Schnelle nichts gefunden
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 14 Februar 2019, 17:33:44
WARNCELLID;NAME;KENNUNG (NUTS);KURZNAME;KENNUNG (SIGN)
https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3 (https://www.dwd.de/DE/leistungen/opendata/help/warnungen/cap_warncellids_csv.csv?__blob=publicationFile&v=3)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: UHT am 15 Februar 2019, 07:15:23
Hallo Forum,

ich benötige eine Möglichkeit ein HTTP PUT zu senden.
Das geht afaik mit HTTMOD adhoc nicht?
Wär es nicht eine Idee, da ein noch ein parameter set[0-9]+Method zu definieren? HttpUtils kann das ja schon.

Grüße
Uwe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 Februar 2019, 18:45:19
Hallo Uwe,

prinzipiell sollte das kein Problem sein.
Aber was für Daten möchtest Du denn damit an den Server senden?
Bei einem set wird ja meist nur ein String übertragen.

Gruss
  Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: UHT am 15 Februar 2019, 18:56:43
Hallo Stefan,

Richtig, nur ein String, wobei ich auch ein Fall hab, wo ich nur ne URL mit PUT aufrufen will.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: UHT am 19 Februar 2019, 12:32:26
So hab das Modul mal modifiziert. Man kann nun bei Set die HTTP Methode auswählen (GET; PUT; PUSH)
@Stefan
kannst du so übernehmen wenn die willst. Falls etwas nicht passt, einfach melden.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mar3d@RPi3 am 19 Februar 2019, 17:37:38
@ Beta-User: attr Wetterwarner readingEncode UTF-8
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Februar 2019, 18:22:25
Hallo Uwe,

sieht auf den ersten Blick gut aus und ich würde es eigentlich auch gerne übernehmen.
Nur hast Du es in einer alten Version von HTTPMOD eingebaut. Das macht die Übernahme etwas aufwändig.
Aktuell ist die 3.5.9, die bisher nur im Forum lag. Ich habe sie gerade auch eingecheckt.
Vielleicht kannst Du Deinen Diff ja auf die neue Version anwenden und dann einen Diff zur 3.5.9 posten?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 19 Februar 2019, 19:39:01
Zitat von: mar3d@RPi3 am 19 Februar 2019, 17:37:38
@ Beta-User: attr Wetterwarner readingEncode UTF-8
:)
Danke; ist jetzt auch so im template, geht ja vermutlich nicht nur mir so...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: UHT am 20 Februar 2019, 07:08:12
Zitat von: StefanStrobel am 19 Februar 2019, 18:22:25
Hallo Uwe,

sieht auf den ersten Blick gut aus und ich würde es eigentlich auch gerne übernehmen.
Nur hast Du es in einer alten Version von HTTPMOD eingebaut. Das macht die Übernahme etwas aufwändig.
Aktuell ist die 3.5.9, die bisher nur im Forum lag. Ich habe sie gerade auch eingecheckt.
Vielleicht kannst Du Deinen Diff ja auf die neue Version anwenden und dann einen Diff zur 3.5.9 posten?

Gruss
   Stefan

Hallo Stefan,

ja klar kann ich machen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: UHT am 20 Februar 2019, 16:46:35
Hallo Stefan,
hier der diff:
232c232
< sub HTTPMOD_AddToQueue($$$$$;$$$$);
---
> sub HTTPMOD_AddToQueue($$$$$;$$$$$);
327a328
>       "set[0-9]+Method:GET,POST,PUT " . # select HTTP method for the set
1533c1534
<         HTTPMOD_AddToQueue($hash, $url, $header, $data, "set$setNum", $rawVal);
---
>         HTTPMOD_AddToQueue($hash, $url, $header, $data, "set$setNum", $rawVal, 0, 0, 0, AttrVal($name, "set${setNum}Method", ""));
2851a2853,2856
>         if($hash->{REQUEST}{method}) {          #check if optional parameter for HTTP Method is set
>             $hash->{method}  = $hash->{REQUEST}{method};
>             Log3 $name, 5, "$name: HandleSendQueue - call with HTTP METHOD: $hash->{method} ";
>         }
2959,2960c2964,2965
< HTTPMOD_AddToQueue($$$$$;$$$$){
<     my ($hash, $url, $header, $data, $type, $value, $count, $ignoreredirects, $prio) = @_;
---
> HTTPMOD_AddToQueue($$$$$;$$$$$){
>     my ($hash, $url, $header, $data, $type, $value, $count, $ignoreredirects, $prio, $method) = @_;
2974a2980
>     $request{method}          = $method;
3478c3484
<     
---
>
3756a3763,3764
>         <li><b>set[0-9]+Method</b></li>
>             HTTP Method (GET, POST or PUT) which shall be used for the set.


Und angehängt noch das komplette File mit meinen Änderungen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 21 Februar 2019, 11:29:53
Zitat von: Beta-User am 28 Dezember 2018, 09:56:43
:)
Dann mal hier eine erweiterte Sammlung für "model", neben Spritpreis ist aktuell drin:
- ORF-Wetter
- homebridge-videodoorbell
- RESOL Solaranlage

Servus,
Das ORF-Wetter scheint nur in Wien zu gehen (Innere Stadt) gibt es halt nicht überall...
Anbei ein allgemeinerer Ansatz, gleich unter Vergabe der Namen im Regex direkt.

attr wetter.orf get01Name Aktualisieren
attr wetter.orf 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]+)


sG
Joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 21 Februar 2019, 12:10:12
Servus zurück!

Danke für's Melden und Verfeinern, im ersten Wurf hatte ich nur mal so zusammengetragen, was ich in den Weiten des Forums gefunden hatte, damit überhaupt erst mal erkennbar wird, wie die Funktionalität an sich ist/sein könnte ;D . Kann also durchaus sein, dass das nicht die einzige konstruktive Kritik an der file bleiben wird ::) .

Update kommt bei Gelegenheit, dann gibts auch einen Link in der MAINTAINER.txt auf https://forum.fhem.de/index.php/topic,97694.0.html (und evtl. ein Eingangstemplate, in dem darauf verlinkt ist).

Gruß, Beta-User
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 22 Februar 2019, 08:02:59
Zitat von: JoeALLb am 21 Februar 2019, 11:29:53
Servus,
Das ORF-Wetter scheint nur in Wien zu gehen (Innere Stadt) gibt es halt nicht überall...
Anbei ein allgemeinerer Ansatz, gleich unter Vergabe der Namen im Regex direkt.
Moin, habe das mal versucht umzusetzen, aber irgendwie will das nicht so recht...
Meine derzeitige RAW-Definition (die Reading-01-Namen hatte ich auch schon mal rausgeworfen, half auch nicht):

defmod ORFtest2 HTTPMOD https://wetter.orf.at/steiermark/ 1800
attr ORFtest2 userattr get01Name reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr ORFtest2 enableControlSet 1
attr ORFtest2 get01Name grazuniversitaet
attr ORFtest2 model A_02m_ORF_weather
attr ORFtest2 reading01-1Name temperature
attr ORFtest2 reading01-2Name weather
attr ORFtest2 reading01-3Name wind
attr ORFtest2 reading01-4Name windDir
attr ORFtest2 reading01-5Name precipitation
attr ORFtest2 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]+)
attr ORFtest2 reading02-1Name sunRise
attr ORFtest2 reading02-2Name sunSet
attr ORFtest2 reading02-3Name moonPhase
attr ORFtest2 reading02-4Name moonRise
attr ORFtest2 reading02-5Name moonSet
attr ORFtest2 reading02-6Name dayLength
attr ORFtest2 reading02-7Name dawn
attr ORFtest2 reading02-8Name dusk
attr ORFtest2 reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr ORFtest2 room Wetter
attr ORFtest2 stateFormat weather bei temperature°C

setstate ORFtest2 weather bei temperature°C


Template dazu:#Austrian weather, Forum: https://forum.fhem.de/index.php/topic,94110.msg868080.html#msg868080
name:A_02m_ORF_weather
filter:TYPE=HTTPMOD
desc: Get austrian weather.<br>Define a HTTPMOD device like <br>defmod weatherORF HTTPMOD https://wetter.orf.at/steiermark/ 1800 <br>Change region to your needs <br><a href="https://forum.fhem.de/index.php/topic,94110.msg868080.html#msg868080">Source: Forum</a>
par:STATIONNAME;Use a valid station name like grazuniversitaet,
attr DEVICE userattr reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr DEVICE enableControlSet 1
attr DEVICE get01Name STATIONNAME
#attr DEVICE reading01-1Name temperature
#attr DEVICE reading01-2Name weather
#attr DEVICE reading01-3Name wind
#attr DEVICE reading01-4Name windDir
#attr DEVICE reading01-5Name precipitation
attr DEVICE 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]+)
attr DEVICE reading02-1Name sunRise
attr DEVICE reading02-2Name sunSet
attr DEVICE reading02-3Name moonPhase
attr DEVICE reading02-4Name moonRise
attr DEVICE reading02-5Name moonSet
attr DEVICE reading02-6Name dayLength
attr DEVICE reading02-7Name dawn
attr DEVICE reading02-8Name dusk
attr DEVICE reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr DEVICE room Wetter
attr DEVICE stateFormat weather bei temperature°C
attr DEVICE model A_02m_ORF_weather

Für einen Schubs wäre ich dankbar, wir können das gerne auch in dem anderen Thread weiter diskutieren, weiß nur nicht, ob du den beobachtest...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 23 Februar 2019, 05:20:51
Bin unterwegs ohne Internet. Mach ich nächste Woche.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JoeALLb am 25 Februar 2019, 08:12:54
Zitat von: Beta-User am 22 Februar 2019, 08:02:59
Moin, habe das mal versucht umzusetzen, aber irgendwie will das nicht so recht...

Hier war eigentlich nur due URL falsch.

Dies hier klappt (für den ersten Teil) direkt!
Der Sonnenaufgang wurd auf der Seite jedoch gar nicht dargestellt, weshalb dieser im zweiten Teil nicht gefunden werden kann.

defmod ORFtest2 HTTPMOD https://wetter.orf.at/steiermark/grazuniversitaet/ 1800
attr ORFtest2 userattr get01Name reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr ORFtest2 enableControlSet 1
attr ORFtest2 get01Name grazuniversitaet
attr ORFtest2 model A_02m_ORF_weather
attr ORFtest2 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]+)
attr ORFtest2 reading02-1Name sunRise
attr ORFtest2 reading02-2Name sunSet
attr ORFtest2 reading02-3Name moonPhase
attr ORFtest2 reading02-4Name moonRise
attr ORFtest2 reading02-5Name moonSet
attr ORFtest2 reading02-6Name dayLength
attr ORFtest2 reading02-7Name dawn
attr ORFtest2 reading02-8Name dusk
attr ORFtest2 reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr ORFtest2 room Wetter
attr ORFtest2 stateFormat weather bei temperature°C

setstate ORFtest2 weather bei 2,2°C
setstate ORFtest2 2019-02-25 08:07:52 humidity 55
setstate ORFtest2 2019-02-25 08:07:52 luftdruck 1036,8
setstate ORFtest2 2019-02-25 08:07:52 messwerte Messwerte von 7.00 Uhr
setstate ORFtest2 2019-02-25 08:07:52 rain 0,0
setstate ORFtest2 2019-02-25 08:07:52 sonne 0
setstate ORFtest2 2019-02-25 08:07:52 taupunkt 5,9
setstate ORFtest2 2019-02-25 08:07:52 temperature 2,2
setstate ORFtest2 2019-02-25 08:07:52 wind Ost, 5
setstate ORFtest2 2019-02-25 08:07:52 windspitzen Ost, 8




Der Regex müsste noch um die weiteren Werte ergänzt werden. GGf. ist dies sogar so möglich dass er fehlende Werte schlichtweg ignoriert.
Machst Du das?
sG
joe
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 26 Februar 2019, 07:44:32
Zitat von: JoeALLb am 25 Februar 2019, 08:12:54
Dies hier klappt (für den ersten Teil) direkt!
[...]
Der Regex müsste noch um die weiteren Werte ergänzt werden. GGf. ist dies sogar so möglich dass er fehlende Werte schlichtweg ignoriert.
Machst Du das?
sG
joe
Moin,

den Zwischenstand habe ich jetzt mal eingecheckt, der Stationsname wird dabei auch direkt aus der URL abgeleitet, das ist vielleicht auch für weitere Anwendungsfälle interessant.
Da ich mich aber a) mit regex auch nicht leicht tue und b) nicht im schönen Österreich wohne:
Ich bau sehr gerne ein, was mir jemand was als Optimierungswunsch zuruft, aber seht mir nach, wenn wesentlich mehr nicht drin ist :-* :) .

(wir können die Diskussion btw. dann auch in dem Template-Thread (https://forum.fhem.de/index.php/topic,97694.0.html) weiterführen.)

Gruß, Beta-User
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ThomasMagnum am 10 April 2019, 08:50:39
Hallo,

ist es möglich ein Reading als zu nutzende URL in HTTPMOD zu verwenden und diese in der DEF per ReadingsVal zu übergeben?
Hintergrund ist die flexible Nutzung von HTTPMOD zur Ermittlung von Spritpreisen anhand der aktuellen Position.

Vielen Dank schon mal.

Gruß, Thomas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 April 2019, 11:58:53
Hallo Thomas,

ich habe es gerade mal ausprobiert und es funktioniert.

folgendes ist ein reading bei mir "devices_01_deviceid", das ich einfach mit einem "$" eingefügt habe.
Dieses reading kommt jedoch aus dem selben device!

attr vallox_cloud get02CheckAllReadings 0
attr vallox_cloud get02Name KWL_Status
attr vallox_cloud get02URL https://cloud.vallox.com:443/api/devicestate/$devices_01_deviceid


Im Log sieht es dann wie folgt aus.

2019.04.10 11:51:04 4: vallox_cloud: https://cloud.vallox.com:443/api/devicestate/$devices_01_deviceid: Redirect (1) to https://cloud.vallox.com:443/account
2019.04.10 11:51:04 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0, prio
2019.04.10 11:51:04 5: vallox_cloud: AddToQueue prepends type get02 to URL https://cloud.vallox.com:443/account, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4


Viel Spaß beim weiteren experimentieren.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 April 2019, 17:26:30
Hallo Thomas,

ja, das kannst Du über Replacements machen. Die musst Du allerdings definieren.
Siehe https://wiki.fhem.de/wiki/HTTPMOD#Further_replacements_of_URL.2C_header_or_post_data

Im Beispiel von Christian kommt ein Redirect vom Server. Das hat aber nichts mit der Ersetzung durch den Inhalt eines Readings zu tun. Ganz so einfach ist es dann leider doch nicht. ;-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 12 April 2019, 12:06:49
Sorry für die fehlinformation,

das habe ich dann leider auch zu spät gemerkt.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ThomasMagnum am 12 April 2019, 13:29:05
Vielen Dank für die Hinweise.
Ich werde mir das im Detail mal über Ostern ansehen.

Da ich als zweite Baustelle noch nach einer Möglichkeit suche mich per HTTPMOD in die FritzBox einzuloggen, um dort die Ereignisanzeige auszulesen, ist es ja eh unumgänglich sich tiefer in dieses Modul einzusteigen.  ;)

Gruß, Thomas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Honigmaul am 12 April 2019, 14:47:18
Hallo zusammen,

Ich hab da auch eine Frage zu den Regex. Ich versuche von einer Textdatei, die online ist aktuelle Daten abzurufen:
https://wasser.bgld.gv.at/fileadmin/hydromap/pegelstationen/datenbereitstellung/W_s_rust_7.txt
Die Daten hier sehen zB so aus: 12.04.2019 11:45:00 115,53

Mein Regex dazu sieht momentan noch starr aus:
attr Wasserstand_Rust reading01Regex 10.04.2019 00:00:00 ([0-9\,]+[0-9]+)

Ich such mir die letzten Tage schon einen Wolf, wie kann ich anstatt des Datums eine Variable einbauen? So a la $year,$month, die es in Fhem standardmäßig gibt?
Wäre schön aktuelle Messwerte zu erhalten.

Vielen Dank schon mal im Voraus
lg Christof
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 19 April 2019, 09:34:54
Mein Problem habe ich blöderweise aber nicht lösen können. Geklärt. Ich wollte für Pikrellcam (http://billw2.github.io/pikrellcam/pikrellcam.html (http://billw2.github.io/pikrellcam/pikrellcam.html)) eine Steuerung haben, die via HTTPMOD funktioniert. Das, was ich brauche, klappt inzwischen. Das ist auch leicht anpassbar; vielleicht kann man das auch nach intensivem Testen in die templates aufnehmen. Hier die Gerätedefinition.


defmod Pikrellcam HTTPMOD none 0
attr Pikrellcam userattr replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value set01Name set01TextArg:0,1 set01URL set02Name set02TextArg:0,1 set02URL set03Name set03TextArg:0,1 set03URL set04Name set04NoArg:0,1 set04URL set05Name set05NoArg:0,1 set05URL set06Name set06NoArg:0,1 set06URL
attr Pikrellcam comment Dieses HTTPMOD-Modul erlaubt die Steuerung von Pikrellcam über http-Befehle. Die enstprechende URL *muss* in dem replacement05-Feld unten einmal eingetragen werden, im define muss "none" als URL stehen. Derzeit implementiert\
1.) set <device> motion on/off\
2.) set <device> archive_day YYYY-MM-DD (nur für einzeln einzugebende Tage)\
3.) set <device> delete_day YYYY-MM-DD (nur für einzeln einzugebende Tage, die nicht archiviert wurden)\
4.) set <device> archive_yesterday (Fotos/Videos von gestern archiviert)\
5.) set <device> delete_last_month (loesche archivierte Fotos/Videos)\
6.) set <device> still (loest Foto aus)\
Das archivierte Medium wird im Attribut type festgelegt (stills oder videos).
attr Pikrellcam replacement01Mode reading
attr Pikrellcam replacement01Regex %%yesterday%%
attr Pikrellcam replacement01Value Sonne:yesterday
attr Pikrellcam replacement02Mode reading
attr Pikrellcam replacement02Regex %%year%%
attr Pikrellcam replacement02Value Sonne:year
attr Pikrellcam replacement03Mode reading
attr Pikrellcam replacement03Regex %%last_month%%
attr Pikrellcam replacement03Value Sonne:last_month
attr Pikrellcam replacement04Mode text
attr Pikrellcam replacement04Regex %%type%%
attr Pikrellcam replacement04Value stills
attr Pikrellcam replacement05Mode text
attr Pikrellcam replacement05Regex %%url%%
attr Pikrellcam replacement05Value hier-den-link-zur-kamera-eintragen
attr Pikrellcam room Kameras
attr Pikrellcam set01Name motion
attr Pikrellcam set01TextArg 1
attr Pikrellcam set01URL http://%%url%%/fifo_command.php?cmd=motion_enable%20$val
attr Pikrellcam set02Name archive_day
attr Pikrellcam set02TextArg 1
attr Pikrellcam set02URL http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&archive_date=$val
attr Pikrellcam set03Name delete_day
attr Pikrellcam set03TextArg 1
attr Pikrellcam set03URL http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&delete_day=$val
attr Pikrellcam set04Name archive_yesterday
attr Pikrellcam set04NoArg 1
attr Pikrellcam set04URL http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&archive_date=%%yesterday%%
attr Pikrellcam set05Name delete_last_month
attr Pikrellcam set05NoArg 1
attr Pikrellcam set05URL http://%%url%%/media-archive.php?mode=archive&type=%%type%%&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
attr Pikrellcam set06Name still
attr Pikrellcam set06NoArg 1
attr Pikrellcam set06URL http://%%url%%/fifo_command.php?cmd=still
attr Pikrellcam stateFormat <a href="http://link-bitte-eintragen">Link</a>

Die im device angegebenen Daten (yesterday, month, year) werden über 99_myUtils.pm einem Astro-device Sonne zugeordnet:

sub DiverseDatenSetzen(){
#Variablen fuer Pikrellcam setzen
my $Pikrell_yesterday = POSIX::strftime("%Y-%m-%d", localtime(time-60*60*24));
my $Pikrell_year = ( localtime(time-31*60*60*24) )[5]+1900;
my $Pikrell_last_month = ( ( localtime() )[4] || 12 );
fhem("setreading Sonne yesterday ".$Pikrell_yesterday);  // <== hier werden die notwendigen Werte in das Astro-device Sonne geschrieben
fhem("setreading Sonne year ".$Pikrell_year);
fhem("setreading Sonne last_month ".$Pikrell_last_month );
fhem("save");
}
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ujaudio am 20 Mai 2019, 11:48:30
Eine einfache Frage zuerst: Bin ich als HTTPMOD-Anfänger hier im richtigen Faden?

Ich möchte meine PV-Anlage nun in mein System einbinden und ein Gerät hat eine xml-Schnittstelle. Entsprechend habe ich definiert
Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.178.29/cgi/ems_data.xml 30
   FUUID      5ce2734b-f33f-4e4e-f13e-f663859493614267
   Interval   30
   LASTSEND   1558354366.29024
   MainURL    http://192.168.178.29/cgi/ems_data.xml
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       pw_engion
   NOTIFYDEV  global
   NR         158
   NTFY_ORDER 50-pw_engion
   STATE      ???
   TRIGGERTIME 1558354396.28927
   TRIGGERTIME_FMT 2019-05-20 14:13:16
   TYPE       HTTPMOD
   addr       http://192.168.178.29:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.29/cgi/ems_data.xml
   header     
   host       192.168.178.29
   httpheader HTTP/1.1 200 Ok
Server: Ethernut 4.6.4.38
Content-Type: text/xml
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 5
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /cgi/ems_data.xml
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.29/cgi/ems_data.xml
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.29/cgi/ems_data.xml
     value      0
   sslargs:
Attributes:
   reading01Name P
   reading01Regex var name="P" value="([\d\.]+)
   room       Energie
   userattr   reading01Name reading01Regex


Das tut so weit, aber "mein" HTTPMOD entspricht nicht ganz dem Wiki (,z.B. set-Befehle). Außerdem komme ich mit dem "XPath-Strict" noch nicht zurecht, mein XML sieht so aus:
<root Timestamp="944006605" id="110000015" ChargerCount="15" Description="Reimann">
<inverter id="M041616">
<var name="P" value="0"/>
<var name="SOC" value="66"/>
<var name="Capacity" value="6912"/>
<var name="State" value="4"/>
</inverter>
</root>

und ich möchte die Werte Timestamp, P, SOC, Capacity und Value. Mit Regex funktioniert es aber.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Mai 2019, 20:09:52
Hallo Jürgen,

der Wiki-Text zu HTTPMOD ist nicht ganz aktuell. Neuere Set-Befehle fehlen dort möglicherweise.
Wenn Du mit Regex klar kommst, gibt es keinen Grund sich mit XPath bei HTTPMOD herumzuschlagen ;-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ujaudio am 21 Mai 2019, 07:23:52
Na, dann bleibe ich doch bei Regex ;)

Einen lieben Gruß
Jürgen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 23 Mai 2019, 21:26:05
Ich habe neuerdings bei zwei von fünf devices die folgende Fehlermeldung log:


2019.05.23 21:29:19 3: Libelium_1: no parsed JSON structure available
2019.05.23 21:29:19 3: Libelium_1: Read response to update didn't match any Reading


Wie kann ich herausfinden woran das liegt?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ujaudio am 25 Mai 2019, 09:34:02
Einfache Frage: Kann man ein Bild einer Webseite, die man mit HTTPMOD zu FHEM bringt anzeigen? Wenn ja: wie??!?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rubinho am 28 Mai 2019, 10:12:21
Hallo Leute,

ich hatte am WE meine Daikin Klimaanlage in Betrieb nehmen wollen, die per HTTPMod gesteuert wird.

Quelle: https://wiki.fhem.de/wiki/HTTPMOD_Beispielkonfiguration_zur_Anbindung_einer_Daikin_Klimaanlage_mit_WLAN-Modul (https://wiki.fhem.de/wiki/HTTPMOD_Beispielkonfiguration_zur_Anbindung_einer_Daikin_Klimaanlage_mit_WLAN-Modul)

Das hatte im vorigen Jahr noch funktioniert.

Speziell geht es um den Bereich...
set01Data pow=$val&mode={{mode}}&stemp={{stemp}}&shum=0&f_rate={{f_rate}}&f_dir={{f_dir}}

Die Angegebenen Variablen werden nicht ausgewertet und genau so wie sie hier stehen, mittels http übermittelt. (Mit tcpdump überprüft).

Irgendwas muss sich in den letzten Monaten geändert haben, weiß vielleicht jemand wo das Problem liegt ?

Es geht im Übrigen nicht nur mir so, auch andere haben sich mittlerweile gemeldet...
https://forum.fhem.de/index.php/topic,44710.0.html (https://forum.fhem.de/index.php/topic,44710.0.html)

Gruß
Rubinho


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Mai 2019, 18:17:27
Hallo Jürgen,

Kannst Du das Bild, das du anzeigen möchtest, nicht einfach per wget holen und in ein per HTTP freigegebenes Verzeichnis schieben?
Falls Du HTTMOD benötigst, da ein Login erforderlich ist o.ä. müssten die Bilddaten aus der HTTP-Response irgendwie in eine Datei geschrieben werden. Das sieht HTTPMOD bisher nicht vor.
Evt. kannst Du das ja selbst mit einem anderen Modul aus einem Reading von HTTPMOD holen oder per Perl in eine Datei schreiben ...

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Mai 2019, 18:18:37
Hallo Rubinho,

setz doch bitte mal verbose auf 5 und poste das Log, damit man sieht, was HTTPMOD mit den Replacements macht.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rubinho am 28 Mai 2019, 18:47:40
Hallo Stefan,

hier hast du das Log.

Die Variable "mode" und f_rate hab ich fest eingestellt. F_rate lässt sich nicht auslesen (Problem von Daikin) und mode 3 ist Cooling.

2019.05.28 18:32:36 5: AC_c_Schlafzimmer: set called with power 1
2019.05.28 18:32:36 5: AC_c_Schlafzimmer: set found option power in attribute set01Name
2019.05.28 18:32:36 5: AC_c_Schlafzimmer: set is checking value 1 against max 1
2019.05.28 18:32:36 4: AC_c_Schlafzimmer: set will now set power -> 1
2019.05.28 18:32:36 4: AC_c_Schlafzimmer: AddToQueue adds set01, initial queue len: 0
2019.05.28 18:32:36 5: AC_c_Schlafzimmer: AddToQueue adds type set01 to URL http://172.22.3.15/aircon/set_control_info?, data pow=$val&mode=3&stemp={{stemp}}&shum=0&f_rate=B&f_dir={{f_dir}}, no headers, retry 0
2019.05.28 18:32:36 5: AC_c_Schlafzimmer: HandleSendQueue called, qlen = 1
2019.05.28 18:32:36 4: AC_c_Schlafzimmer: HandleSendQueue sends request type set01 to URL http://172.22.3.15/aircon/set_control_info?,
data: pow=1&mode=3&stemp={{stemp}}&shum=0&f_rate=B&f_dir={{f_dir}}, No Header
timeout 2
2019.05.28 18:32:36 5: HttpUtils url=http://172.22.3.15/aircon/set_control_info?
2019.05.28 18:32:36 4: IP: 172.22.3.15 -> 172.22.3.15
2019.05.28 18:32:36 5: HttpUtils request header:
POST /aircon/set_control_info? HTTP/1.0
Host: 172.22.3.15
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 60
Content-Type: application/x-www-form-urlencoded

2019.05.28 18:32:36 4: http://172.22.3.15/aircon/set_control_info?: HTTP response code 200
2019.05.28 18:32:36 5: HttpUtils http://172.22.3.15/aircon/set_control_info?: Got data, length: 17
2019.05.28 18:32:36 5: HttpUtils response header:
HTTP/1.0 200 OK
Content-Length: 17
Content-Type: text/plain
2019.05.28 18:32:36 4: AC_c_Schlafzimmer: Read callback: request type was set01 retry 0,
Body: ret=PARAM NG,adv=
2019.05.28 18:32:36 5: AC_c_Schlafzimmer: ExtractSid called, context set, num 01
2019.05.28 18:32:36 4: AC_c_Schlafzimmer: CheckAuth decided no authentication required


Des Weiteren hat ein Member das Problem wohl schon erkannt...
https://forum.fhem.de/index.php?topic=44710.0 (https://forum.fhem.de/index.php?topic=44710.0)

Ich muss nur schauen, dass ich es richtig übersetze.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Mai 2019, 22:33:11
Vielen Dank!
Jetzt bräuchte ich noch ein List von dem Device, damit ich die genaue Konfiguration sehen kann ...

Gruß / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rubinho am 29 Mai 2019, 07:48:48
Moin Stefan,

hier wie gewünscht die Auflistung des Gerätes.
Mittleweile aber mit der Modifikation des Forenmitglieds aus dem anderen Thread. Damit lässt sich die Klimaanlage wieder steuern.
Aber vielleicht hilft es trotzdem dem ursprünglichen Problem auf die Schliche zu kommen.

Gruß
Rubinho

Internals:
   BUSY       0
   CFGFN      ./FHEM/httpmod.cfg
   DEF        http://172.22.3.15/aircon/get_control_info 60
   FUUID      5c5440d0-f33f-0949-4d29-f907bad0e9ab3a88
   Interval   60
   LASTSEND   1559108458.49134
   MainURL    http://172.22.3.15/aircon/get_control_info
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       AC_c_Schlafzimmer
   NOTIFYDEV  global
   NR         648
   NTFY_ORDER 50-AC_c_Schlafzimmer
   ReplacementEnabled 1
   STATE      on
   TRIGGERTIME 1559108488.29119
   TRIGGERTIME_FMT 2019-05-29 07:41:28
   TYPE       HTTPMOD
   addr       http://172.22.3.15:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://172.22.3.15/aircon/get_control_info
   header     
   host       172.22.3.15
   httpheader HTTP/1.0 200 OK
Content-Length: 334
Content-Type: text/plain
   httpversion 1.0
   hu_blocking 0
   hu_filecount 12
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /aircon/get_control_info
   protocol   http
   redirects  0
   timeout    2
   url        http://172.22.3.15/aircon/get_control_info
   value      0
   QUEUE:
   READINGS:
     2019-05-29 07:40:58   adv             
     2019-05-29 07:40:58   alert           255
     2019-05-29 07:40:58   b_f_dir         vertical
     2019-05-29 07:40:58   b_f_rate        B
     2019-05-29 07:40:58   b_mode          3
     2019-05-29 07:40:58   b_shum          0
     2019-05-29 07:40:58   b_stemp         18.0
     2019-05-29 07:40:58   dfd1            0
     2019-05-29 07:40:58   dfd2            0
     2019-05-29 07:40:58   dfd3            1
     2019-05-29 07:40:58   dfd4            0
     2019-05-29 07:40:58   dfd5            0
     2019-05-29 07:40:58   dfd6            0
     2019-05-29 07:40:58   dfd7            0
     2019-05-29 07:40:58   dfdh            0
     2019-05-29 07:40:58   dfr1            5
     2019-05-29 07:40:58   dfr2            5
     2019-05-29 07:40:58   dfr3            B
     2019-05-29 07:40:58   dfr4            5
     2019-05-29 07:40:58   dfr5            5
     2019-05-29 07:40:58   dfr6            5
     2019-05-29 07:40:58   dfr7            5
     2019-05-29 07:40:58   dfrh            5
     2019-05-29 07:40:58   dh1             AUTO
     2019-05-29 07:40:58   dh2             50
     2019-05-29 07:40:58   dh3             0
     2019-05-29 07:40:58   dh4             0
     2019-05-29 07:40:58   dh5             0
     2019-05-29 07:40:58   dh7             AUTO
     2019-05-29 07:40:58   dhh             50
     2019-05-29 07:40:58   dt1             25.0
     2019-05-29 07:40:58   dt2             M
     2019-05-29 07:40:58   dt3             18.0
     2019-05-29 07:40:58   dt4             25.0
     2019-05-29 07:40:58   dt5             25.0
     2019-05-29 07:40:58   dt7             25.0
     2019-05-29 07:40:58   f_dir           1
     2019-05-29 07:40:58   f_rate          silent
     2019-05-29 07:40:58   mode            3
     2019-05-29 07:40:58   pow             1
     2019-05-29 07:40:58   ret             OK
     2019-05-29 07:40:58   shum            0
     2019-05-29 07:40:58   stemp           18.0
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://172.22.3.15/aircon/get_control_info
     value      0
   defptr:
     readingBase:
       adv        reading
       alert      reading
       b_f_dir    reading
       b_f_rate   reading
       b_mode     reading
       b_shum     reading
       b_stemp    reading
       dfd1       reading
       dfd2       reading
       dfd3       reading
       dfd4       reading
       dfd5       reading
       dfd6       reading
       dfd7       reading
       dfdh       reading
       dfr1       reading
       dfr2       reading
       dfr3       reading
       dfr4       reading
       dfr5       reading
       dfr6       reading
       dfr7       reading
       dfrh       reading
       dh1        reading
       dh2        reading
       dh3        reading
       dh4        reading
       dh5        reading
       dh7        reading
       dhh        reading
       dt1        reading
       dt2        reading
       dt3        reading
       dt4        reading
       dt5        reading
       dt7        reading
       f_dir      reading
       f_rate     reading
       mode       reading
       pow        reading
       ret        reading
       shum       reading
       stemp      reading
     readingNum:
       adv        13
       alert      32
       b_f_dir    36
       b_f_rate   35
       b_mode     29
       b_shum     31
       b_stemp    30
       dfd1       45
       dfd2       46
       dfd3       47
       dfd4       48
       dfd5       49
       dfd6       50
       dfd7       51
       dfdh       52
       dfr1       37
       dfr2       38
       dfr3       39
       dfr4       40
       dfr5       41
       dfr6       42
       dfr7       43
       dfrh       44
       dh1        22
       dh2        23
       dh3        24
       dh4        25
       dh5        26
       dh7        27
       dhh        28
       dt1        16
       dt2        17
       dt3        18
       dt4        19
       dt5        20
       dt7        21
       f_dir      34
       f_rate     33
       mode       12
       pow        11
       ret        10
       shum       15
       stemp      14
     readingOutdated:
     requestReadings:
       update:
         adv        reading 13
         alert      reading 32
         b_f_dir    reading 36
         b_f_rate   reading 35
         b_mode     reading 29
         b_shum     reading 31
         b_stemp    reading 30
         dfd1       reading 45
         dfd2       reading 46
         dfd3       reading 47
         dfd4       reading 48
         dfd5       reading 49
         dfd6       reading 50
         dfd7       reading 51
         dfdh       reading 52
         dfr1       reading 37
         dfr2       reading 38
         dfr3       reading 39
         dfr4       reading 40
         dfr5       reading 41
         dfr6       reading 42
         dfr7       reading 43
         dfrh       reading 44
         dh1        reading 22
         dh2        reading 23
         dh3        reading 24
         dh4        reading 25
         dh5        reading 26
         dh7        reading 27
         dhh        reading 28
         dt1        reading 16
         dt2        reading 17
         dt3        reading 18
         dt4        reading 19
         dt5        reading 20
         dt7        reading 21
         f_dir      reading 34
         f_rate     reading 33
         mode       reading 12
         pow        reading 11
         ret        reading 10
         shum       reading 15
         stemp      reading 14
   sslargs:
Attributes:
   devStateIcon off.*:frost@grey:on on.*:frost@blue:off
   enableControlSet 1
   group      AC
   icon       frost
   reading10Name ret
   reading10Regex ret=([^,]*)
   reading11Name pow
   reading11Regex pow=([^,]*)
   reading12Name mode
   reading12Regex mode=([^,]*)
   reading13Name adv
   reading13Regex adv=([^,]*)
   reading14Name stemp
   reading14Regex stemp=([^,]*)
   reading15Name shum
   reading15Regex shum=([^,]*)
   reading16Name dt1
   reading16Regex dt1=([^,]*)
   reading17Name dt2
   reading17Regex dt2=([^,]*)
   reading18Name dt3
   reading18Regex dt3=([^,]*)
   reading19Name dt4
   reading19Regex dt4=([^,]*)
   reading20Name dt5
   reading20Regex dt5=([^,]*)
   reading21Name dt7
   reading21Regex dt7=([^,]*)
   reading22Name dh1
   reading22Regex dh1=([^,]*)
   reading23Name dh2
   reading23Regex dh2=([^,]*)
   reading24Name dh3
   reading24Regex dh3=([^,]*)
   reading25Name dh4
   reading25Regex dh4=([^,]*)
   reading26Name dh5
   reading26Regex dh5=([^,]*)
   reading27Name dh7
   reading27Regex dh7=([^,]*)
   reading28Name dhh
   reading28Regex dhh=([^,]*)
   reading29Name b_mode
   reading29Regex b_mode=([^,]*)
   reading30Name b_stemp
   reading30Regex b_stemp=([^,]*)
   reading31Name b_shum
   reading31Regex b_shum=([^,]*)
   reading32Name alert
   reading32Regex alert=([^,]*)
   reading33Name f_rate
   reading33OMap A:auto, B:silent, 3:very_low, 4:low, 5:medium, 6:high, 7:very_high
   reading33Regex f_rate=([^,]*)
   reading34Name f_dir
   reading34Regex f_dir=([^,]*)
   reading35Name b_f_rate
   reading35Regex b_f_rate=([^,]*)
   reading36Name b_f_dir
   reading36OMap 0:stopped, 1:vertical, 2:horizontal, 3:vertical&horizontal
   reading36Regex b_f_dir=([^,]*)
   reading37Name dfr1
   reading37Regex dfr1=([^,]*)
   reading38Name dfr2
   reading38Regex dfr2=([^,]*)
   reading39Name dfr3
   reading39Regex dfr3=([^,]*)
   reading40Name dfr4
   reading40Regex dfr4=([^,]*)
   reading41Name dfr5
   reading41Regex dfr5=([^,]*)
   reading42Name dfr6
   reading42Regex dfr6=([^,]*)
   reading43Name dfr7
   reading43Regex dfr7=([^,]*)
   reading44Name dfrh
   reading44Regex dfrh=([^,]*)
   reading45Name dfd1
   reading45Regex dfd1=([^,]*)
   reading46Name dfd2
   reading46Regex dfd2=([^,]*)
   reading47Name dfd3
   reading47Regex dfd3=([^,]*)
   reading48Name dfd4
   reading48Regex dfd4=([^,]*)
   reading49Name dfd5
   reading49Regex dfd5=([^,]*)
   reading50Name dfd6
   reading50Regex dfd6=([^,]*)
   reading51Name dfd7
   reading51Regex dfd7=([^,]*)
   reading52Name dfdh
   reading52Regex dfdh=([^,]*)
   replacement01Mode expression
   replacement01Regex #([^#]+)#
   replacement01Value ReadingsVal($name, $1, "")
   replacement02Regex #([^#]+)#
   replacement03Regex #([^#]+)#
   replacement04Regex #([^#]+)#
   room       Schlafzimmer
   set01Data  pow=$val&mode=3&stemp=#stemp#&shum=0&f_rate=B&f_dir=#f_dir#
   set01Hint  0,1
   set01Max   1
   set01Min   0
   set01Name  power
   set02Data  pow=#pow#&mode=$val&stemp=#stemp#&shum=0&f_rate=#b_f_rate#&f_dir=#f_dir#
   set02Hint  0,3,4,6
   set02Min   0
   set02Name  mode
   set03Data  pow=#pow#&mode=#mode#&stemp=$val&shum=0&f_rate=#b_f_rate#&f_dir=#f_dir#
   set03Max   41
   set03Min   10
   set03Name  stemp
   set04Data  pow=#pow#&mode=#mode#&stemp=#stemp#&shum=0&f_rate=$val&f_dir=#f_dir#
   set04Hint  A,B,3,4,5,6,7
   set04Name  Fan
   set04TextArg 1
   setURL     http://172.22.3.15/aircon/set_control_info?
   stateFormat {(ReadingsVal($name,"pow","") == 1) ? ("on") : ("off") }
   userattr   reading10Name reading10Regex reading11Name reading11OMap reading11Regex reading12Name reading12OMap reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29OMap reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33OMap reading33Regex reading34Name reading34OMap reading34Regex reading35Name reading35OMap reading35Regex reading36Name reading36OMap reading36Regex reading37Name reading37Regex reading38Name reading38Regex reading39Name reading39Regex reading40Name reading40Regex reading41Name reading41Regex reading42Name reading42Regex reading43Name reading43Regex reading44Name reading44Regex reading45Name reading45Regex reading46Name reading46Regex reading47Name reading47Regex reading48Name reading48Regex reading49Name reading49Regex reading50Name reading50Regex reading51Name reading51Regex reading52Name reading52Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Regex replacement03Regex replacement04Regex set01Data set01Hint set01Max set01Min set01Name set02Data set02Hint set02Max set02Min set02Name set03Data set03Hint set03Max set03Min set03Name set03URL set04Data set04Hint set04Max set04Min set04Name set04TextArg:0,1 setURL
   verbose    0
   webCmd     stemp
   widgetOverride stemp:slider,10,1,41
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Mai 2019, 18:14:02
Hallo,

wenn ich den Post von roelb unter https://forum.fhem.de/index.php/topic,44710.15.html richtig interpretiere, dann kommt das Problem daher dass Ihr {{ als Marker für die Replacements verwendet und dass das seit einem Perl-Update nicht mehr funktioniert.

Allerdings vermisse ich in Deinem Log den Aufruf von HTTPMOD_Replace. Das ist seltsam.

Schau doch mal ob Du das Problem wie von roelb beschrieben lösen kannst.
Falls nicht würde ich Dich bitten in Deinem HTTPMOD ein paar Log-Zeilen zu aktivieren und dann nochmal ein Log zu posten.
(in Ziele 1046 in HTTPMOD_Replace das # vor dem Log3 entfernen. Ebenso in 1051, dann am besten ein Neustart von Fhem)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Juni 2019, 09:20:43
Hallo ZDX,

Du könntest doch auch einfach textField als setXXHint Attribut setzen oder?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 11 August 2019, 21:58:23
Ich verstehe etwas am Modul nicht. Ich habe mir für Pikrellcam ein httpDevice gebastelt, das so aussieht:

Internals:
   BUSY       0
   CHANGED   
   DEF        none 0
   FUUID      5cb99591-f33f-1115-e143-d1017d17853436dc
   Interval   0
   LASTSEND   1565552820.67529
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       Pikrellcam_Garage
   NOTIFYDEV  global
   NR         221
   NTFY_ORDER 50-Pikrellcam_Garage
   ReplacementEnabled 1
   STATE      <a href="http://raspgarage.fritz.box/">Link</a>
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://raspgarage.fritz.box:80
   auth       0
   data       
   displayurl http://raspgarage.fritz.box/fifo_command.php?cmd=still
   header     
   host       raspgarage.fritz.box
   httpversion 1.0
   ignoreredirects 0
   loglevel   4
   path       /fifo_command.php?cmd=still
   protocol   http
   redirects  0
   timeout    2
   url        http://raspgarage.fritz.box/fifo_command.php?cmd=still
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       set06
     url        http://raspgarage.fritz.box/fifo_command.php?cmd=still
     value      0
   sslargs:
Attributes:
   comment    Dieses HTTPMOD-Modul erlaubt die Steuerung von Pikrellcam über http-Befehle. Die enstprechende URL *muss* in jeden Set-Befehl eingetragen werden, im define muss "none" als URL stehen. Derzeit implementiert
1.) set <device> motion on/off
2.) set <device> archive_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
3.) set <device> delete_day YYYY-MM-DD (nur für einzeln einzugebende Tage, die nicht archiviert wurden)
4.) set <device> archive_yesterday (Videos von gestern archiviert)
5.) set <device> delete_last_month (loesche archivierte Fotos)
   group      intern
   replacement01Mode expression
   replacement01Regex %%yesterday%%
   replacement01Value strftime("%Y-%m-%d", localtime(time-60*60*24))
   replacement02Mode expression
   replacement02Regex %%year%%
   replacement02Value ( localtime(time-31*60*60*24) )[5]+1900
   replacement03Regex %%last_month%%
   replacement03Value ( ( localtime() )[4] || 12 )
   room       Kameras
   set01Name  motion
   set01TextArg 1
   set01URL   http://raspgarage.fritz.box/fifo_command.php?cmd=motion_enable%20$val
   set02Name  archive_day
   set02TextArg 1
   set02URL   http://raspgarage.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=$val
   set03Name  delete_day
   set03TextArg 1
   set03URL   http://raspgarage.fritz.box/media-archive.php?mode=media&type=videos&dir=media&delete_day=$val
   set04Name  archive_yesterday
   set04NoArg 1
   set04URL   http://raspgarage.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=%%yesterday%%
   set05Name  delete_last_month
   set05NoArg 1
   set05URL   http://raspgarage.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
   set06Name  still
   set06NoArg 1
   set06URL   http://raspgarage.fritz.box/fifo_command.php?cmd=still
   stateFormat <a href="http://raspgarage.fritz.box/">Link</a>
   userattr   replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Regex replacement03Value set01Name set01TextArg:0,1 set01URL set02Name set02TextArg:0,1 set02URL set03Name set03TextArg:0,1 set03URL set04Name set04NoArg:0,1


Es verweist auf die Adresse raspgarten.fritz.box, die früher mal der IP 192.1682.199 zugeordnet war, jetzt aber auf 193.168.2.40 verweist. Wenn ich nun oben im Modul den Befehl set...still auslöse, passiert folgendes:

2019.08.11 21:47:00 5: Pikrellcam_Garage: set called with still
2019.08.11 21:47:00 5: Pikrellcam_Garage: set found option still in attribute set06Name
2019.08.11 21:47:00 4: Pikrellcam_Garage: set will now set still
2019.08.11 21:47:00 4: Pikrellcam_Garage: AddToQueue adds set06, initial queue len: 0
2019.08.11 21:47:00 5: Pikrellcam_Garage: AddToQueue adds type set06 to URL http://raspgarage.fritz.box/fifo_command.php?cmd=still, no data, no headers, retry 0
2019.08.11 21:47:00 5: Pikrellcam_Garage: HandleSendQueue called, qlen = 1
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%yesterday%%, mode expression, value strftime("%Y-%m-%d", localtime(time-60*60*24)) input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%year%%, mode expression, value ( localtime(time-31*60*60*24) )[5]+1900 input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%last_month%%, mode text, value ( ( localtime() )[4] || 12 ) input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%yesterday%%, mode expression, value strftime("%Y-%m-%d", localtime(time-60*60*24)) input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%year%%, mode expression, value ( localtime(time-31*60*60*24) )[5]+1900 input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%last_month%%, mode text, value ( ( localtime() )[4] || 12 ) input:
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%yesterday%%, mode expression, value strftime("%Y-%m-%d", localtime(time-60*60*24)) input: http://raspgarage.fritz.box/fifo_command.php?cmd=still
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%year%%, mode expression, value ( localtime(time-31*60*60*24) )[5]+1900 input: http://raspgarage.fritz.box/fifo_command.php?cmd=still
2019.08.11 21:47:00 5: Pikrellcam_Garage: Replace called for type set06, regex %%last_month%%, mode text, value ( ( localtime() )[4] || 12 ) input: http://raspgarage.fritz.box/fifo_command.php?cmd=still
2019.08.11 21:47:00 4: Pikrellcam_Garage: HandleSendQueue sends request type set06 to URL http://raspgarage.fritz.box/fifo_command.php?cmd=still, No Data, No Header
timeout 2
2019.08.11 21:47:00 5: HttpUtils url=http://raspgarage.fritz.box/fifo_command.php?cmd=still
2019.08.11 21:47:00 4: IP: raspgarage.fritz.box -> 192.168.2.199
2019.08.11 21:47:02 3: Pikrellcam_Garage: Read callback: Error: connect to http://raspgarage.fritz.box:80 timed out
2019.08.11 21:47:02 4: Pikrellcam_Garage: Read callback: request type was set06 retry 0, body empty
2019.08.11 21:47:02 5: Pikrellcam_Garage: ExtractSid called, context set, num 06
2019.08.11 21:47:02 4: Pikrellcam_Garage: CheckAuth decided no authentication r

Wieso erscheint da die ursprüngliche IP und wie kann ich die löschen? Nicht mal in der fhem.cfg habe ich die Adresse 192.168.2.199 gefunden, wo hat er die denn her?!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 August 2019, 00:08:32
Das hat er noch in irgendwelchem DNS gefunden.
Was hast Du im Device "global" für DNS Parameter?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 12 August 2019, 06:43:26
Zitat von: amenomade am 12 August 2019, 00:08:32
Was hast Du im Device "global" für DNS Parameter?
Ah, die Fritzbox:

Internals:
   ...
   READINGS:
Attributes
   dnsServer  192.168.2.1

Da war unter den nicht genutzten Geräten di alte IP hinterlegt. Ich denke, das war es; danke!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: dr4g0n am 14 August 2019, 00:27:57
hallo zusammen,

ich habe ein kleines Problem mit meiner FHEM installation und vermute HTTPMod als Übeltäter (oder etwas darunter).
Es lief alles ohne Probleme und von eben auf jetzt, bekomme ich nurnoch timeouts und empty responses.

Die Tankstellen Devices sind HTTPMOD requests die eine URL triggern, die Huebridge ist über das HueAddon eingebunden (nutzt das Addon auch HTTPMOD?)
Auf dem Server selbst, kann ich mit "curl xxxx" die Daten abrufen und alles funktioniert, mir ist aufgefallen dass in dem einem TankstellenDevice die HTTP Response steht und dort sehe ich nur kryptische Zeichen (SSL Verschlüsselt?)
Wenn ich alle meine HTTPMOD + HUEBridge deaktiviere, dann kann ich FHEM wieder halbwegs bedienen.
Ich habe DBLog am laufen und auf dem selben Server läuft ein Grafana, die Auswertung (last 30Days ) mit Grafana bekomme ich noch in Sekunden.
Im HTOP auf dem Debian-FHEM-Host sieht alles gut aus, CPULast bei 3-5%

Hardware: Debian + FHEM + Grafana -> VM mit 2GB Ram (500MB inuse) und 4 Kernen (AMD Ryzen 1900), SSD Speicher
DBLog: Auf dem Host als MySQL (MariaDB) 32GB RAM, AMD Ryzen, SSD

Noch ein Merkwürdiger Logeintrag:

2019.08.14 00:42:21 1: Calendar Kalender: retrieval failed with error message <hidden>: Can't connect(2) to https://calendar.google.com:443:  SSL connect attempt failed
2019.08.14 00:42:21 1: Calendar Kalender: retrieved no or empty data


Hier das Log:

2019.08.14 00:20:44 2: HueBridge: http request failed: connect to http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: write to http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: write to http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:20:44 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:00 2: HueBridge: http request failed: write to http://Philips-hue:80 timed out
2019.08.14 00:21:00 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:00 3: Roborock: connection timeout
2019.08.14 00:21:00 2: HueBridge: http request failed: write to http://Philips-hue:80 timed out
2019.08.14 00:21:00 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:10 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:10 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:10 2: HueBridge: http request failed: write to http://Philips-hue:80 timed out
2019.08.14 00:21:10 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/3: empty answer received
2019.08.14 00:21:16 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/8: empty answer received
2019.08.14 00:21:16 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/3: empty answer received
2019.08.14 00:21:16 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/10: empty answer received
2019.08.14 00:21:16 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/lights: empty answer received
2019.08.14 00:21:26 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:26 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:26 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:26 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:31 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/8: empty answer received
2019.08.14 00:21:31 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/lights: empty answer received
2019.08.14 00:21:47 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:47 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:47 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:47 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:47 2: HueBridge: http request failed: read from http://Philips-hue:80 timed out
2019.08.14 00:21:47 3: TankstelleHalchter: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleOil: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleHEMSZ: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleEdeka: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleARAL: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleREALBS: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleREALSZ: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 3: TankstelleClean: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2019.08.14 00:21:47 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/lights: empty answer received
2019.08.14 00:21:47 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/9: empty answer received
2019.08.14 00:21:47 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/10: empty answer received
2019.08.14 00:21:47 2: HueBridge: http request failed: http://Philips-hue/api/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/sensors/3: empty answer received


Und ein apptime max

name                                     function                               max    count      total  average   maxDly   avgDly TS Max call     param Max call
MQTT2_FHEM_Server_10.0.0.126_49501       MQTT2_SERVER_Read                    20250        3   20252.29  6750.76     0.00     0.00 14.08. 00:29:28 HASH(MQTT2_FHEM_Server_10.0.0.126_49501)
notify_PowerWattTotal                    notify_Exec                          10080       35   15293.34   436.95     0.00     0.00 14.08. 00:29:28 HASH(notify_PowerWattTotal); HASH(MQTT2_server)
MQTT2_FHEM_Server_10.0.0.129_49565       MQTT2_SERVER_Read                     5399        4    5402.21  1350.55     0.00     0.00 14.08. 00:29:34 HASH(MQTT2_FHEM_Server_10.0.0.129_49565)
MQTT2_FHEM_Server_10.0.0.155_49537       MQTT2_SERVER_Read                     5269        5    5275.07  1055.01     0.00     0.00 14.08. 00:29:08 HASH(MQTT2_FHEM_Server_10.0.0.155_49537)
EnergyCurrent                            readingsGroup_Notify                  5048       47   20444.82   435.00     0.00     0.00 14.08. 00:29:13 HASH(EnergyCurrent); HASH(MQTT2_server)
notify_PowerKWHTotal                     notify_Exec                           5016       35    5627.28   160.78     0.00     0.00 14.08. 00:29:18 HASH(notify_PowerKWHTotal); HASH(MQTT2_server)
dblog                                    DbLog_Log                             5012       47   32711.56   695.99     0.00     0.00 14.08. 00:29:13 HASH(dblog); HASH(EnergyCurrent)
MQTT2_FHEM_Server_10.0.0.189_49584       MQTT2_SERVER_Read                     1055        5    1057.97   211.59     0.00     0.00 14.08. 00:29:29 HASH(MQTT2_FHEM_Server_10.0.0.189_49584)
MQTT2_FHEM_Server                        MQTT2_SERVER_Read                      427       10     745.78    74.58     0.00     0.00 14.08. 00:29:00 HASH(MQTT2_FHEM_Server)
MQTT2_FHEM_Server_10.0.0.83_49519        MQTT2_SERVER_Read                      148        5     150.63    30.13     0.00     0.00 14.08. 00:29:35 HASH(MQTT2_FHEM_Server_10.0.0.83_49519)
MQTT2_FHEM_Server_10.0.0.70_49582        MQTT2_SERVER_Read                       53        3      89.73    29.91     0.00     0.00 14.08. 00:28:56 HASH(MQTT2_FHEM_Server_10.0.0.70_49582)
notify_emoncms_Sonoff_POWER              notify_Exec                             29       35     125.32     3.58     0.00     0.00 14.08. 00:29:08 HASH(notify_emoncms_Sonoff_POWER); HASH(MQTT2_tvschrank)
notify_emoncms_sonoff_AM2301_Temperatur  notify_Exec                             22       35      58.59     1.67     0.00     0.00 14.08. 00:29:34 HASH(notify_emoncms_sonoff_AM2301_Temperatur); HASH(MQTT2_temp_keller)
MQTT2_FHEM_Server_10.0.0.229_51795       MQTT2_SERVER_Read                       13        2      16.79     8.40     0.00     0.00 14.08. 00:29:28 HASH(MQTT2_FHEM_Server_10.0.0.229_51795)
MQTT2_FHEM_Server_10.0.0.207_49500       MQTT2_SERVER_Read                        5        3       5.81     1.94     0.00     0.00 14.08. 00:28:55 HASH(MQTT2_FHEM_Server_10.0.0.207_49500)
MQTT2_FHEM_Server_10.0.0.178_52648       MQTT2_SERVER_Read                        4        4       9.85     2.46     0.00     0.00 14.08. 00:28:55 HASH(MQTT2_FHEM_Server_10.0.0.178_52648)
tmr-HUEBridge_GetUpdate                  HASH(0x5585bb3b8110)                     1        2       2.27     1.14  2128.75  1065.12 14.08. 00:28:55 HASH(HueBridge)
tmr-HUEDevice_GetUpdate                  HASH(0x5585bb22b668)                     1        8      10.80     1.35  4357.65   591.88 14.08. 00:28:58 HASH(MotionTemp)
WEB_127.0.0.1_47552                      FW_Notify                                1       47      18.04     0.38     0.00     0.00 14.08. 00:28:56 HASH(WEB_127.0.0.1_47552); HASH(MQTT2_lichterkette)
MQTT2_FHEM_Server_10.0.0.146_49609       MQTT2_SERVER_Read                        1        4       4.07     1.02     0.00     0.00 14.08. 00:28:57 HASH(MQTT2_FHEM_Server_10.0.0.146_49609)
MQTT2_FHEM_Server_10.0.0.199_49580       MQTT2_SERVER_Read                        1        5       2.45     0.49     0.00     0.00 14.08. 00:29:00 HASH(MQTT2_FHEM_Server_10.0.0.199_49580)
WEB_10.0.0.160_54737                     FW_Read                                  1        1       1.30     1.30     0.00     0.00 14.08. 00:28:55 HASH(WEB_10.0.0.160_54737)
MQTT2_FHEM_Server_10.0.0.33_49553        MQTT2_SERVER_Read                        1        3       2.58     0.86     0.00     0.00 14.08. 00:28:58 HASH(MQTT2_FHEM_Server_10.0.0.33_49553)
tmr-HUEDevice_GetUpdate                  HASH(0x5585bb228510)                     1        8       6.51     0.81  4357.26   591.92 14.08. 00:29:01 HASH(MotionBright)
tmr-HUEDevice_GetUpdate                  HASH(0x5585bd5c6a80)                     0        8       6.18     0.77  4357.01   591.98 14.08. 00:28:58 HASH(HueBueroSchalter)
tmr-HUEDevice_GetUpdate                  HASH(0x5585bb178e98)                     0        8       5.80     0.73  4356.17   591.98 14.08. 00:29:00 HASH(Motion)
nice-__ANON__                                                                     0       10       5.93     0.59     0.11     0.05 14.08. 00:28:58 (undef)
tmr-__ANON__                             _                                        0        9       4.30     0.48     1.98     1.18 14.08. 00:28:58 (undef)
tmr-ENIGMA2_GetStatus                    HASH(0x5585ba263e10)                     0        1       0.63     0.63  3078.73  3078.73 14.08. 00:29:08 HASH(Ultimo)
notify_PowerKWHTotalTodayCost            notify_Exec                              0        7       1.94     0.28     0.00     0.00 14.08. 00:29:29 HASH(notify_PowerKWHTotalTodayCost); HASH(MQTT2_TotalPower)
MQTT2_lichterkette                       MQTT2_DEVICE_Set                         0        2       0.50     0.25     0.00     0.00 14.08. 00:28:56 HASH(MQTT2_lichterkette); MQTT2_lichterkette; ?
WEB                                      FW_Read                                  0        2       0.60     0.30     0.00     0.00 14.08. 00:28:55 HASH(WEB)
tmr-HTTPMOD_GetUpdate                    update                                   0        3       0.53     0.18  1006.13   336.21 14.08. 00:28:57 update:emoncms
tmr-MQTT2_SERVER_keepaliveChecker        HASH(0x5585bb22bea8)                     0        2       0.24     0.12  2127.63  1065.20 14.08. 00:28:55 HASH(MQTT2_FHEM_Server)
MQTT2_schreibtisch                       MQTT2_DEVICE_Set                         0        1       0.15     0.15     0.00     0.00 14.08. 00:29:34 HASH(MQTT2_schreibtisch); MQTT2_schreibtisch; ?
MQTT2_buerotv                            MQTT2_DEVICE_Set                         0        1       0.15     0.15     0.00     0.00 14.08. 00:29:29 HASH(MQTT2_buerotv); MQTT2_buerotv; ?
MQTT2_server                             MQTT2_DEVICE_Set                         0        1       0.15     0.15     0.00     0.00 14.08. 00:29:28 HASH(MQTT2_server); MQTT2_server; ?
MQTT2_tvschrank                          MQTT2_DEVICE_Set                         0        1       0.15     0.15     0.00     0.00 14.08. 00:29:08 HASH(MQTT2_tvschrank); MQTT2_tvschrank; ?
MQTT2_buero_schrank                      MQTT2_DEVICE_Set                         0        1       0.11     0.11     0.00     0.00 14.08. 00:28:55 HASH(MQTT2_buero_schrank); MQTT2_buero_schrank; ?
MQTT2_McLighting_Flur                    MQTT2_DEVICE_Set                         0        8       0.54     0.07     0.00     0.00 14.08. 00:28:57 HASH(MQTT2_McLighting_Flur); MQTT2_McLighting_Flur; ?
FileLog_LCDBacklight                     FileLog_Log                              0       47       2.03     0.04     0.00     0.00 14.08. 00:28:55 HASH(FileLog_LCDBacklight); HASH(MQTT2_FHEM_Server)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 August 2019, 01:20:30
Scheint ein allgemeines Netzwerkproblem zu sein. Kannst Du clever-tanken.de aus einer Konsole anpingen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: dr4g0n am 14 August 2019, 08:14:06
in der Konsole funktioniert alles. Curl / Ping funktionieren bei allen Devices, auch die Philips-Hue URL liefert Daten zurück.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: dr4g0n am 14 August 2019, 08:44:18
Ich habe gerade nochmal das Vodafone Modem neugestartet, jetzt schein wieder alles zu laufen. =)
Finde es aber dennoch komisch, dass auch lokale HTTP Aufrufe auf einen Timeout gelaufen sind.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 14 August 2019, 09:26:49
ZitatFinde es aber dennoch komisch, dass auch lokale HTTP Aufrufe auf einen Timeout gelaufen sind.
hast du attr global dnsServer gesetzt?
wenn nicht, solltest du es tun.

bei dir ist scheinbar auch viel los im netzwerk.
vielleicht auch mal ein wenig "entschlacken".

also: events minimieren, requests minimieren und zb mit attr alignTime bei httpmod die requests "entzerren".
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 28 August 2019, 21:49:35
Eine Frage zu HTTPMOD. Ich dachte immer, ich könnte in so einer Konstruktion
attr <device> replacement01Mode expression
attr <device> replacement01Regex %%yesterday%%
attr <device> replacement01Value strftime("%Y-%m-%d", localtime(time-60*60*24))

Perl-expressions nehmen. Das geht aber nicht.

Ich habe das nun so gelöst, dass ich als Modus "Text" wähle und mir mit MyUtils am Anfang des Tages die Werte ausrechnen lasse, auch ok:
attr <device> replacement01Mode text
attr <device> replacement01Regex %%yesterday%%
attr <device> replacement01Value 2019-08-27

Ich hatte aber zwischendurch vergessen, von Expression auf Text umzustellen und erhielt folgende Fehlermeldung:
Attr with invalid Expression (mode is expression) in attr <device> replacement01Value 2019-08-27: Illegal octal digit '8' at (eval 1889476) line 1, at end of line 
Bedeutet das irgendwas?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 28 August 2019, 22:10:23
Ich erläutere nochmal, wieso das nicht geht. Hier meine Einträge im Logfile:

2019.08.28 21:03:29 5: Pikrellcam: ExtractSid called, context set, num 05
2019.08.28 21:03:29 4: Pikrellcam: CheckAuth decided no authentication required
2019.08.28 21:07:39 5: Pikrellcam: set called with delete_last_month
2019.08.28 21:07:39 5: Pikrellcam: set found option delete_last_month in attribute set05Name
2019.08.28 21:07:39 4: Pikrellcam: set will now set delete_last_month
2019.08.28 21:07:39 4: Pikrellcam: AddToQueue adds set05, initial queue len: 0
2019.08.28 21:07:39 5: Pikrellcam: AddToQueue adds type set05 to URL http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all, no data, no headers, retry 0
2019.08.28 21:07:39 5: Pikrellcam: HandleSendQueue called, qlen = 1
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%yesterday%%, mode expression, value {strftime("%Y-%m-%d", localtime(time-60*60*24))} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%year%%, mode expression, value {( localtime(time-31*60*60*24) )[5]+1900} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%last_month%%, mode text, value {( ( localtime() )[4] || 12 )} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%yesterday%%, mode expression, value {strftime("%Y-%m-%d", localtime(time-60*60*24))} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%year%%, mode expression, value {( localtime(time-31*60*60*24) )[5]+1900} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%last_month%%, mode text, value {( ( localtime() )[4] || 12 )} input:
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%yesterday%%, mode expression, value {strftime("%Y-%m-%d", localtime(time-60*60*24))} input: http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%year%%, mode expression, value {( localtime(time-31*60*60*24) )[5]+1900} input: http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
2019.08.28 21:07:39 4: Pikrellcam: Replace: match for type set05, regex %%year%%, mode expression, value {( localtime(time-31*60*60*24) )[5]+1900}, input: http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all, result is http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=2019&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
2019.08.28 21:07:39 5: Pikrellcam: Replace called for type set05, regex %%last_month%%, mode text, value {( ( localtime() )[4] || 12 )} input: http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=2019&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
2019.08.28 21:07:39 4: Pikrellcam: Replace: match for type set05, regex %%last_month%%, mode text, value {( ( localtime() )[4] || 12 )}, input: http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all, result is http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=2019&m0={( ( localtime() )[4] || 12 )}&d0=1&m1={( ( localtime() )[4] || 12 )}&d1=31&delete_all
2019.08.28 21:07:39 4: Pikrellcam: HandleSendQueue sends request type set05 to URL http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=2019&m0={( ( localtime() )[4] || 12 )}&d0=1&m1={( ( localtime() )[4] || 12 )}&d1=31&delete_all, No Data, No Header
timeout 2
2019.08.28 21:07:39 5: HttpUtils url=http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=2019&m0={( ( localtime() )[4] || 12 )}&d0=1&m1={( ( localtime() )[4] || 12 )}&d1=31&delete_all
2019.08.28 21:07:39 4: IP: rasp.fritz.box -> 192.168.2.30
2019.08.28 21:07:39 5: HttpUtils request header:
GET /media-archive.php?mode=archive&type=videos&year=2019&m0={( ( localtime() )[4] || 12 )}&d0=1&m1={( ( localtime() )[4] || 12 )}&d1=31&delete_all HTTP/1.0
Host: rasp.fritz.box
User-Agent: fhem
Accept-Encoding: gzip,deflate

Man sieht, dass der Befehl nicht aufgelöst wird.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 August 2019, 01:11:08
Das hat aber für %%year%% funktioniert, oder?

Kann man alle deine replacementXX Readings sehen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 29 August 2019, 09:52:43
Das weiß ich nicht so genau, richtig geklappt hat das nie. Ich habe nun blöderweise alles geändert, hier mal das aktuelle Listing:
Internals:
   BUSY       0
   CHANGED   
   DEF        none 0
   FUUID      5cb8c86e-f33f-1115-01ab-f15bc7b80c7d9a1c
   Interval   0
   LASTSEND   1567051920.03168
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       Pikrellcam
   NOTIFYDEV  global
   NR         219
   NTFY_ORDER 50-Pikrellcam
   ReplacementEnabled 1
   STATE      <a href="http://rasp.fritz.box/">Link</a>
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://rasp.fritz.box:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://rasp.fritz.box/fifo_command.php?cmd=still
   header     
   host       rasp.fritz.box
   httpheader HTTP/1.1 200 OK
Server: nginx/1.10.3
Date: Thu, 29 Aug 2019 04:12:00 GMT
Content-Type: text/html; charset=UTF-8
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 6
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /fifo_command.php?cmd=still
   protocol   http
   redirects  0
   timeout    2
   url        http://rasp.fritz.box/fifo_command.php?cmd=still
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       set06
     url        http://rasp.fritz.box/fifo_command.php?cmd=still
     value      0
   sslargs:
Attributes:
   comment    Dieses HTTPMOD-Modul erlaubt die Steuerung von Pikrellcam über http-Befehle. Die enstprechende URL *muss* in jeden Set-Befehl eingetragen werden, im define muss "none" als URL stehen. Derzeit implementiert
1.) set <device> motion on/off
2.) set <device> archive_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
3.) set <device> delete_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
4.) set <device> archive_yesterday (Videos von gestern archiviert)
5.) set <device> delete_last_month
   group      intern
   replacement01Mode reading
   replacement01Regex %%yesterday%%
   replacement01Value yesterday
   replacement02Mode reading
   replacement02Regex %%year%%
   replacement02Value year
   replacement03Mode reading
   replacement03Regex %%last_month%%
   replacement03Value last_month
   room       Kameras
   set01Name  motion
   set01TextArg 1
   set01URL   http://rasp.fritz.box/fifo_command.php?cmd=motion_enable%20$val
   set02Name  archive_day
   set02TextArg 1
   set02URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=$val
   set03Name  delete_day
   set03TextArg 1
   set03URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&delete_day=$val
   set04Name  archive_yesterday
   set04NoArg 1
   set04URL   http://rasp.fritz.box/media-archive.php?mode=media&type=videos&dir=media&archive_date=%%yesterday%%
   set05Name  delete_last_month
   set05NoArg 1
   set05URL   http://rasp.fritz.box/media-archive.php?mode=archive&type=videos&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
   set06Name  still
   set06NoArg 1
   set06URL   http://rasp.fritz.box/fifo_command.php?cmd=still
   stateFormat <a href="http://rasp.fritz.box/">Link</a>
   userReadings yesterday, year, last_month
   userattr   replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value set01Name set01TextArg:0,1 set01URL set02Name set02TextArg:0,1 set02URL set03Name set03TextArg:0,1 set03URL set04Name set04NoArg:0,1 set04Replacement01Value set04URL set05Name set05NoArg:0,1 set05URL set06Name set06NoArg:0,1 set06URL
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 August 2019, 11:31:36
Zitat von: andies am 29 August 2019, 09:52:43
Das weiß ich nicht so genau, richtig geklappt hat das nie. Ich habe nun blöderweise alles geändert, hier mal das aktuelle Listing:


Naja, eine Log hat nur in Verbindung mit dem entspr. "list" Sinn, und umgekehrt.
Jetzt hast Du replacementMode Reading. Dafür musst Du die entspr. Readings haben, was nicht der Fall ist. Dein userReadings Eintrag bringt nichts, da die keine Werte bekommen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 29 August 2019, 11:48:22
Die readings befülle ich mit einem at-Kommando, das wiederum aus myUtils.pm eine Funktion holt. Das, was ich jetzt habe, funktioniert ja - ist eben nur kein Perl-expression in dem device.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 06 September 2019, 15:07:38
Weiss jemand, ob man set-Kommandos in httpmod definieren kann, die zwei Variablen enthalten? Ich benötige so etwas wie

set Kamera archive videos <Datum>

wobei Kamera das httpmod-Device ist, archive dann auf eine URL umleiten wird und diese URL aber zwei Parameter, nämlich das Wort videos und einen Datumstring benötigen wird.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 06 September 2019, 16:01:24
Was ist die 2. Variable ausser <Datum> und wie sieht dann die gesamte set Request (URL + Headers + Data) aus?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 06 September 2019, 19:07:48
Danke schon mal für die Hilfe. Ich benötige zwei set-Befehle der Form
set <device> archive_day videos 2019-09-06
sowie
set <device> archive_day stills 2019-09-06

Die URL sieht dann so aus:

http://rasp.fritz.box/media-archive.php?mode=media&type=stills/videos&dir=media&archive_date=$val

und eben stills oder videos sowie das Datum als $val.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 06 September 2019, 19:22:08
Also.... das einfachste wäre 2 unterschiedliche set Kommandos, ein archive_day_videos für videos, ein achive_day_stills für stills.

Ansonsten könnte man vielleicht mit set01Replacement01Value und set01Replacement02Value und set01ReplacementNNMode expression ein $val in der Form "videos 2019-09-06" mit substr so parsen, dass das erste Teil an eine Stelle kommt, und das Datum an die andere Stelle. Das habe ich aber noch nie probiert.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 06 September 2019, 21:08:07
Variante 1 habe ich im Einsatz, allerdings gibt es vier verschiedene Kommandos und damit benötige ich 8 sets, und das war mir zu viel. Variante 2 überlege ich mir mal, danke!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 15 September 2019, 20:53:55
Ich suche nach einer Möglichkeit einen curl Befehl mit HTTPMOD umzusetzen.

Der Befehl lautet:

curl -H "X-User-id:XXX" -H "X-User-hash:YYY" -s https://data.at.com/api/v1/devices/NNN/all/60


Kann mir jemand hier Starthilfe leisten?

Besten Dank
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 15 September 2019, 22:27:20
Starthilfe habe ich dir schon in deinem anderen Thread gegeben:
https://forum.fhem.de/index.php/topic,103703.msg974356.html#msg974356
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 16 September 2019, 06:26:49
zwischen Tür und Angel

defmod DeinName HTTPMOD https://data.at.com/api/v1/devices/NNN/all/60 0

und dann
Zitat
If your device expects special HTTP-headers then specify them as
attr (DeinName) requestHeader1
to
attr (DeinName)  requestHeaderX
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 16 September 2019, 21:02:45
Ich habe es hingekriegt ... besten dank!


defmod uRadMonitorAC3 HTTPMOD https://data.at.com/api/v1/devices/NNN/all/120 60
attr uRadMonitorAC3 userattr getData getHeader getHeader1 getHeader2 reading100JSON reading100Name reading101JSON reading101Name reading102JSON reading102Name reading103JSON reading103Name reading104JSON reading104Name reading105JSON reading105Name reading106JSON reading106Name reading107JSON reading107Name reading108JSON reading108Name reading109JSON reading109Name reading110JSON reading110Name reading111JSON reading111Name reading112JSON reading112Name reading113JSON reading113Name reading114JSON reading114Name reading115JSON reading115Name reading116JSON reading116Name reading117JSON reading117Name reading118JSON reading118Name requestHeader1 requestHeader2
attr uRadMonitorAC3 extractAllJSONFilter 01_*
attr uRadMonitorAC3 reading100JSON 01_time
attr uRadMonitorAC3 reading100Name 01_time
attr uRadMonitorAC3 reading101JSON 01_latitude
attr uRadMonitorAC3 reading101Name 01_latitude
attr uRadMonitorAC3 reading102JSON 01_longitude
attr uRadMonitorAC3 reading102Name 01_longitude
attr uRadMonitorAC3 reading103JSON 01_timelocal
attr uRadMonitorAC3 reading103Name 01_timelocal
attr uRadMonitorAC3 reading104JSON 01_humidity
attr uRadMonitorAC3 reading104Name 01_humidity
attr uRadMonitorAC3 reading105JSON 01_temperature
attr uRadMonitorAC3 reading105Name 01_temperature
attr uRadMonitorAC3 reading106JSON 01_vocaqi
attr uRadMonitorAC3 reading106Name 01_vocaqi
attr uRadMonitorAC3 reading107JSON 01_voc
attr uRadMonitorAC3 reading107Name 01_voc
attr uRadMonitorAC3 reading108JSON 01_duty
attr uRadMonitorAC3 reading108Name 01_duty
attr uRadMonitorAC3 reading109JSON 01_pm10
attr uRadMonitorAC3 reading109Name 01_pm10
attr uRadMonitorAC3 reading110JSON 01_pm25
attr uRadMonitorAC3 reading110Name 01_pm25
attr uRadMonitorAC3 reading111JSON 01_voltage
attr uRadMonitorAC3 reading111Name 01_voltage
attr uRadMonitorAC3 reading112JSON 01_altitude
attr uRadMonitorAC3 reading112Name 01_altitude
attr uRadMonitorAC3 reading113JSON 01_noise
attr uRadMonitorAC3 reading113Name 01_noise
attr uRadMonitorAC3 reading114JSON 01_pressure
attr uRadMonitorAC3 reading114Name 01_pressure
attr uRadMonitorAC3 reading115JSON 01_ch2o
attr uRadMonitorAC3 reading115Name 01_ch2o
attr uRadMonitorAC3 reading116JSON 01_cpm
attr uRadMonitorAC3 reading116Name 01_cpm
attr uRadMonitorAC3 reading117JSON 01_pm1
attr uRadMonitorAC3 reading117Name 01_pm1
attr uRadMonitorAC3 reading118JSON 01_co2
attr uRadMonitorAC3 reading118Name 01_co2
attr uRadMonitorAC3 requestHeader1 X-User-id:XXX
attr uRadMonitorAC3 requestHeader2 X-User-hash:YYY
attr uRadMonitorAC3 stateFormat https://data.at.com
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 08 Oktober 2019, 23:40:39
@StefanStrobel:
Ich hätte ein Anliegen zu Deinem tollen HTTPMOD-Modul.
Ich setze es für unterschiedliche Dinge ein und bin für das Modul sehr dankbar.
Die Möglichkeiten damit sind ja schier unendlich - Danke für die tolle Arbeit.


Seit ca. Jänner 2019 beobachte ich aber leider ein komisches Verhalten, bei dem ich Dich um Unterstützung bitten wollte.
Vielleicht kennst Du den Thread: https://forum.fhem.de/index.php/topic,84372.0.html (https://forum.fhem.de/index.php/topic,84372.0.html)
Ich bin leider auch ein Betroffener des darin beschriebenen Fehlers...  :(


Bei mir ist die Ursache wohl in deinem Modul (und meiner extrem umfangreichen Nutzung davon) zu finden.
Ich habe ein recht umfangreiches TV-Programm mit HTTPMOD umgesetzt (einige hundert RegEx waren dazu notwendig).
Inspiriert und weiterentwickelt nach Beispielen aus dem Thread: https://forum.fhem.de/index.php/topic,28123.0.html (https://forum.fhem.de/index.php/topic,28123.0.html)
Könntest Du mich hier bitte bei der Fehlersuche Unterstützen? Meine Kenntnisse sind da leider recht rudimentär...


Fehlerbild:
Nach ca. 19 Stunden erhalte ich den obig beschriebenen Fehler und mein FHEM startet (automatisiert) neu.
Der User "HomeAuto_User" bestätigt mir das Verhalten https://forum.fhem.de/index.php/topic,84372.msg981998.html#msg981998 (https://forum.fhem.de/index.php/topic,84372.msg981998.html#msg981998) https://forum.fhem.de/index.php/topic,84372.msg971930.html#msg971930 (https://forum.fhem.de/index.php/topic,84372.msg971930.html#msg971930)


Kurze Zusammenfassung: https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483 (https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483)
Zugehörigen Code für fhem.cfg habe ich angehängt.
Abschnitt für 99_myutils.pm siehe unten:
#####################################
### Zeilenumbruch für TV-Programm ###
#####################################

sub
wrapLine($$)
{
  my ($string, $maxLength) = @_;
  $string = decode_entities($string);
my @stringParts = split(/ /, $string);
  my $actRowLength = 0;
  my $resultString = '';
  while (scalar(@stringParts) > 0) {
  my $tempString = shift @stringParts;
    if ($actRowLength > 0)
    {
    if (($actRowLength + length($tempString)) > $maxLength)
      {
      $actRowLength = 0;
        $resultString .= '<br>';
      }
    }
    $resultString .= $tempString;
    $actRowLength += length($tempString);
    if (scalar(@stringParts) > 0)
    {
    $resultString .= ' ';
    $actRowLength += 1;
    }
  }
  if ($resultString eq '')
  {
  return ' ';
  }
  else
  {
  return $resultString;
  }
}

#### ENDE ### Zeilenumbruch #############



Wäre echt toll, wenn man den Fehler finden/beheben könnte.


LG,
Hardlife
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: scp am 09 Oktober 2019, 15:29:34
Hi ich wollte eine Varibale von einem Reading meines Sensors  in einen HTTPMOD POST Request einbauen . Momentan kann ich zum Beispiel über
Zitatdata
mein ein paar Parameter erfolgreich senden :D
   ( meine Post nachrichten sehe ich auf https://ptsv2.com  ::))
param1=888888&param2=2222&param3=WMBUS_SON_23275669_22_8:1_value&param4={ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}&param6={ReadingsVal("MeineVariablev1","state","2");;}&param7=$MeineVariablev1&param999=$replacement01Value&param99999={return 1;;}&out999=0ue&out112=$MeineVariablev1&param90=$MeineVariable1

Nun möchte ich wie gesagt einfach eine Variable übermitteln.
Habe wie man schon sieht einige Kombinationen ausprobiert.. aber es wird nur der Variablenname gesendet.

Bin auch schon auf das Replacement gestoßen. Aber er wenn ich
Zitatparamx = %%value%%
eingebe wird auch nichts übermittelt.
Jetzt habe ich dazu auch noch etwas anderes gesehen:

Zitatattr PM set01Name HeizungSoll
attr PM set01URL http://MyPoolManager/cgi-bin/webgui.fcgi?sid=$sid
attr PM set01Hint 6,10,20,30
attr PM set01Min 6
attr PM set01Max 30
attr PM setHeader1 Content-Type: application/json
attr PM set01Data {"set" :{"34.3118.value" :"$val" }}

aber auch dort habe ich es nicht geschaft den wert meiner Variablen zu platzieren.

:o
Momentan muss ich deswegen noch die Werte mit Hilfe von curl über eine Perl-Skript schicken...

Kann evtl. jemand noch einen Hinweis geben^^ Vielen Dank :D
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Oktober 2019, 18:44:06
Replacement ist richtig, aber ohne deine Versuche kann man nicht sehen, was Du probiert hast und ggf. korrigieren
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Oktober 2019, 22:40:53
Hallo Hardlife,

das Problem mit dem TV-Programm werde ich mir ansehen.
Es wird aber ein paar Tage dauern.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 09 Oktober 2019, 22:53:29
Zitat von: StefanStrobel am 09 Oktober 2019, 22:40:53
das Problem mit dem TV-Programm werde ich mir ansehen.
Es wird aber ein paar Tage dauern.

Danke schön, echt nett von Dir.

LG,
Hardlife
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Oktober 2019, 17:55:06
Hallo Hardlife,

um das Testen / Nachvollziehen zu vereinfach wäre es sehr hilfreich, wenn ich eine weniger komplexe Konfiguration hätte, die dennoch einen Anstieg in der Speichernutzung zeigt.
Könntest Du mal testen, wie stark Du die Konfiguration reduzieren kannst?

Gruß / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HomeAuto_User am 10 Oktober 2019, 18:13:22
Zitat von: StefanStrobel am 10 Oktober 2019, 17:55:06
Hallo Hardlife,

um das Testen / Nachvollziehen zu vereinfach wäre es sehr hilfreich, wenn ich eine weniger komplexe Konfiguration hätte, die dennoch einen Anstieg in der Speichernutzung zeigt.
Könntest Du mal testen, wie stark Du die Konfiguration reduzieren kannst?

Gruß / Thanx
    Stefan

Hallo, da ich das selbe Problem besitze kann ich dir eine vereinfachte Konfiguration zukommen lassen morgen.

Ich hatte es soweit getrieben, das ich fast alle Module deaktivierte.

Ich vermute, das Problem besteht darin, wenn die Internetgeschwindigkeit schwankt / oder der TimeOut greift um keinen sauberen Abbau zu realisieren.

Da manche Webseiten auch viel Werbung übertragen , so läd man diese ja Automat mit. (Aus diesem Anlass verfolge ich testweise einen anderen Weg um an die Daten zu kommen)

Gruß marco


Gesendet von iPhone mit Tapatalk Pro
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 11 Oktober 2019, 11:29:05
Zitat von: StefanStrobel am 10 Oktober 2019, 17:55:06
um das Testen / Nachvollziehen zu vereinfach wäre es sehr hilfreich, wenn ich eine weniger komplexe Konfiguration hätte, die dennoch einen Anstieg in der Speichernutzung zeigt.
Könntest Du mal testen, wie stark Du die Konfiguration reduzieren kannst?

Hi StefanStrobel,
Ich versuche mal, die Devices zu minimieren und beobachte, ob der Speicheranstieg weiterhin auftritt.
Kann aber etwas dauern, da ich die Reduktionen immer eine gewisse Zeit auf Speicheranstieg beobachten muss.
Danke jedenfalls für deine Unterstützung.


Zitat von: HomeAuto_User am 10 Oktober 2019, 18:13:22
Hallo, da ich das selbe Problem besitze kann ich dir eine vereinfachte Konfiguration zukommen lassen morgen.

Hi HomeAuto_User,
Vielleicht bis Du so nett und stellt Stefanstrobel in der Zwischenzeit deine Config zum Testen zur Verfügung?
Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 12 Oktober 2019, 11:35:21
Hi,

untenstehend eine Minimal-Config.
Speicheranstieg damit: ca. 40 in 20 Stunden
Aktualisierungsintervall habe ich auf 300 Sekunden gezetzt
(define TV_Programme HTTPMOD http://www.klack.de/fernsehprogramm/was-laeuft-gerade/0/0/all.html 300)

Logos habe ich der Korrektheit halber auch angehängt.
Diese müssten unter /opt/fhem/www/images/default/tvmovie/ gespeichert werden.

#---------Start:Fernsehprogram---------
#Get Current TV Show
define TV_Programme HTTPMOD http://www.klack.de/fernsehprogramm/was-laeuft-gerade/0/0/all.html 300
attr TV_Programme userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex reading100Name reading100Regex reading101Name reading101Regex reading102Name reading102Regex reading103Name reading103Regex reading104Name reading104Regex reading105Name reading105Regex reading106Name reading106Regex reading107Name reading107Regex reading108Name reading108Regex reading109Name reading109Regex reading10Name reading10Regex reading110Name reading110Regex reading111Name reading111Regex reading112Name reading112Regex reading113Name reading113Regex reading114Name reading114Regex reading115Name reading115Regex reading116Name reading116Regex reading117Name reading117Regex reading11Name reading11Regex reading12Name reading12Regex reading13Name reading13Regex reading14Name reading14Regex reading15Name reading15Regex reading16Name reading16Regex reading17Name reading17Regex reading18Name reading18Regex reading19Name reading19Regex reading20Name reading20Regex reading21Name reading21Regex reading22Name reading22Regex reading23Name reading23Regex reading24Name reading24Regex reading25Name reading25Regex reading26Name reading26Regex reading27Name reading27Regex reading28Name reading28Regex reading29Name reading29Regex reading30Name reading30Regex reading31Name reading31Regex reading32Name reading32Regex reading33Name reading33Regex reading34Name reading34Regex reading35Name reading35Regex reading36Name reading36Regex reading37Name reading37Regex reading38Name reading38Regex reading39Name reading39Regex reading40Name reading40Regex reading41Name reading41Regex reading42Name reading42Regex reading43Name reading43Regex reading44Name reading44Regex reading45Name reading45Regex reading46Name reading46Regex reading47Name reading47Regex reading48Name reading48Regex reading49Name reading49Regex reading50Name reading50Regex reading51Name reading51Regex reading52Name reading52Regex reading53Name reading53Regex reading54Name reading54Regex reading55Name reading55Regex reading56Name reading56Regex reading57Name reading57Regex reading58Name reading58Regex reading59Name reading59Regex reading60Name reading60Regex reading61Name reading61Regex reading62Name reading62Regex reading63Name reading63Regex reading64Name reading64Regex reading65Name reading65Regex reading66Name reading66Regex reading67Name reading67Regex reading68Name reading68Regex reading69Name reading69Regex reading70Name reading70Regex reading71Name reading71Regex reading72Name reading72Regex reading73Name reading73Regex reading74Name reading74Regex reading75Name reading75Regex reading76Name reading76Regex reading77Name reading77Regex reading78Name reading78Regex reading79Name reading79Regex reading80Name reading80Regex reading81Name reading81Regex reading82Name reading82Regex reading83Name reading83Regex reading84Name reading84Regex reading85Name reading85Regex reading86Name reading86Regex reading87Name reading87Regex reading88Name reading88Regex reading89Name reading89Regex reading90Name reading90Regex reading91Name reading91Regex reading92Name reading92Regex reading93Name reading93Regex reading94Name reading94Regex reading95Name reading95Regex reading96Name reading96Regex reading97Name reading97Regex reading98Name reading98Regex reading99Name reading99Regex readingsRegex_MDRPT_Nexttime stateFormat timeout verbose
attr TV_Programme enableControlSet 1
attr TV_Programme reading02Name VOX_Next
attr TV_Programme reading02Regex title="VOX"><img[\w\W]*?<td class="time[\w\W]*?Row">[\w\W]*?<div[\w\W]*?<div class="content">\s*<a[\w\W]*?>\s*(.*?)\s*<\/a>
attr TV_Programme reading03Name NDR
attr TV_Programme reading03Regex title="NDR"><img[\w\W]*?<div class="content">\s*<a[\w\W]*?>\s*(.*?)\s*<\/a>
attr TV_Programme reading04Name VOX
attr TV_Programme reading04Regex title="VOX"><img[\w\W]*?<div class="content">\s*<a[\w\W]*?>\s*(.*?)\s*<\/a>
attr TV_Programme reading100Name NDR_Next
attr TV_Programme reading100Regex title="NDR"><img[\w\W]*?<td class="time[\w\W]*?Row">[\w\W]*?<div[\w\W]*?<div class="content">\s*<a[\w\W]*?>\s*(.*?)\s*<\/a>
attr TV_Programme reading111Name NDR_Nexttime
attr TV_Programme reading111Regex title="NDR"><img[\w\W]*?<td class="time[\w\W]*?Row">\s*(.*?)\s*<div
attr TV_Programme reading92Name VOX_Nexttime
attr TV_Programme reading92Regex title="VOX"><img[\w\W]*?<td class="time[\w\W]*?Row">\s*(.*?)\s*<div
attr TV_Programme stateFormat mein_TV_programm: ARD_Next
attr TV_Programme timeout 20
attr TV_Programme verbose 1


define TV_Programm_Jetzt readingsGroup <Sender>,<Aktuelle Sendung>,<Ab>,<Nachfolgende Sendung> \
TV_Programme:VOX,VOX_Nexttime,VOX_Next \
TV_Programme:NDR,NDR_Nexttime,NDR_Next \
attr TV_Programm_Jetzt alias aktuelles&nbspTV-Programm
attr TV_Programm_Jetzt group TV-Programm
attr TV_Programm_Jetzt nameIcon {VOX => 'tvmovie/vox', NDR => 'tvmovie/ndr'}
attr TV_Programm_Jetzt nameStyle style="color:yellow"
attr TV_Programm_Jetzt room TV-Programm
attr TV_Programm_Jetzt style style="font-size:18px"
attr TV_Programm_Jetzt valueFormat {wrapLine($VALUE, 50)}



Der Code für den Zeilenumbruch aus der 99_myUtils.pm:
#####################################
### Zeilenumbruch für TV-Programm ###
#####################################

sub
wrapLine($$)
{
  my ($string, $maxLength) = @_;
  $string = decode_entities($string);
my @stringParts = split(/ /, $string);
  my $actRowLength = 0;
  my $resultString = '';
  while (scalar(@stringParts) > 0) {
  my $tempString = shift @stringParts;
    if ($actRowLength > 0)
    {
    if (($actRowLength + length($tempString)) > $maxLength)
      {
      $actRowLength = 0;
        $resultString .= '<br>';
      }
    }
    $resultString .= $tempString;
    $actRowLength += length($tempString);
    if (scalar(@stringParts) > 0)
    {
    $resultString .= ' ';
    $actRowLength += 1;
    }
  }
  if ($resultString eq '')
  {
  return ' ';
  }
  else
  {
  return $resultString;
  }
}

#### ENDE ### Zeilenumbruch #############
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Oktober 2019, 08:45:18
Hallo Hardlife,

ich habe Deine abgespeckte Konfiguration über Nach bei mir laufen lassen.
Der benutzte Speicherplatz schwankt zwar hin und her, aber unterm Strich ist kein relevanter Anstieg zu sehen.
Auch nicht wenn ich alle 10 Sekunden aktualisiere.

Entweder tritt es doch erst bei der vollständigen Konfiguration auf (was ich aber für unwahrscheinlich halte)
oder es hat mit anderen Dingen zu tun.

Was für eine OS-Version bzw. Perl-Version läuft denn bei Dir?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Oktober 2019, 09:03:17
Ich beobachte jetzt mal das Verhalten mit der vollständigen Konfiguration ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HomeAuto_User am 13 Oktober 2019, 19:14:36
Hallo Stefan,

Zitat von: StefanStrobel am 13 Oktober 2019, 09:03:17
Ich beobachte jetzt mal das Verhalten mit der vollständigen Konfiguration ...

Da ich nun auch wie angekündigt endlcih dazu komme, das Ganze nochmal zu testen, habe ich vorhin mal den "Cut" begonnen.
Ich habe den HTTPMOD aktiviert, mit 93 Regex und intervall 600.

Zum normalen RestartStart von FHEM liegt alles beim normalen. Die Speicherauslastung von FHEM liegt aktuell bei
- ca 230MB RAM laut sysmon
- 9% MEM laut htop in der Kommandozeile


Ich werde dich in ein paar Stunden informieren wie der Anstiegt sich vollzieht. Das Verhalten bei@Hardlife und bei mir ist genau das selbe Verhalten.

MTTPMOD: # $Id: 98_HTTPMOD.pm 19978 2019-08-10 12:51:48Z StefanStrobel $
Perl Version: v5.28.1
Debian: Raspbian GNU/Linux 10


MfG Marco

PS. Danke das wir uns der Problematik widmen :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Oktober 2019, 19:40:34
Ich habe es seit heute morgen mit der vollen Konfiguration von Hardlife unter Beobachtung.
Bis jetzt sieht es so aus (Werte aus Top):


So 13. Okt 09:07:08 CEST 2019
28993 fhem      20   0   67392  61764   7192 S  12,5  6,5   1:59.53 perl

So 13. Okt 11:07:12 CEST 2019
28993 fhem      20   0   68028  62456   7192 S   6,2  6,6  20:55.30 perl

So 13. Okt 12:07:14 CEST 2019
28993 fhem      20   0   68408  62888   7192 S  20,0  6,6  30:00.46 perl

So 13. Okt 13:07:17 CEST 2019
28993 fhem      20   0   69308  63628   7192 S  13,3  6,7  38:42.36 perl

So 13. Okt 14:07:19 CEST 2019
28993 fhem      20   0   69312  63652   7192 S  13,3  6,7  48:15.21 perl

So 13. Okt 15:07:21 CEST 2019
28993 fhem      20   0   69324  63708   7192 S  43,8  6,7  57:17.81 perl

So 13. Okt 15:07:21 CEST 2019
28993 fhem      20   0   69324  63708   7192 S  43,8  6,7  57:17.81 perl

So 13. Okt 16:07:23 CEST 2019
28993 fhem      20   0   69316  63732   7192 S   0,0  6,7  66:26.43 perl

So 13. Okt 17:07:25 CEST 2019
28993 fhem      20   0   69412  63696   7192 S   6,7  6,7  75:42.80 perl

So 13. Okt 18:07:27 CEST 2019
28993 fhem      20   0   69396  63736   7192 S  33,3  6,7  84:25.30 perl

So 13. Okt 19:07:29 CEST 2019
28993 fhem      20   0   69568  63852   7192 S  18,8  6,7  94:14.89 perl


mal sehen wie es weiter geht.
In Summe ist es nach 10 Stunden bisher noch entspannt:
KiB Mem :   949448 total,   246452 free,   104532 used,   598464 buff/cache
KiB Swap:   102396 total,   102396 free,        0 used.   736488 avail Mem

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HomeAuto_User am 13 Oktober 2019, 20:03:29
Zitat von: StefanStrobel am 13 Oktober 2019, 19:40:34
Ich habe es seit heute morgen mit der vollen Konfiguration von Hardlife unter Beobachtung.
Bis jetzt sieht es so aus (Werte aus Top):


So 13. Okt 09:07:08 CEST 2019
28993 fhem      20   0   67392  61764   7192 S  12,5  6,5   1:59.53 perl

So 13. Okt 11:07:12 CEST 2019
28993 fhem      20   0   68028  62456   7192 S   6,2  6,6  20:55.30 perl

So 13. Okt 12:07:14 CEST 2019
28993 fhem      20   0   68408  62888   7192 S  20,0  6,6  30:00.46 perl

So 13. Okt 13:07:17 CEST 2019
28993 fhem      20   0   69308  63628   7192 S  13,3  6,7  38:42.36 perl

So 13. Okt 14:07:19 CEST 2019
28993 fhem      20   0   69312  63652   7192 S  13,3  6,7  48:15.21 perl

So 13. Okt 15:07:21 CEST 2019
28993 fhem      20   0   69324  63708   7192 S  43,8  6,7  57:17.81 perl

So 13. Okt 15:07:21 CEST 2019
28993 fhem      20   0   69324  63708   7192 S  43,8  6,7  57:17.81 perl

So 13. Okt 16:07:23 CEST 2019
28993 fhem      20   0   69316  63732   7192 S   0,0  6,7  66:26.43 perl

So 13. Okt 17:07:25 CEST 2019
28993 fhem      20   0   69412  63696   7192 S   6,7  6,7  75:42.80 perl

So 13. Okt 18:07:27 CEST 2019
28993 fhem      20   0   69396  63736   7192 S  33,3  6,7  84:25.30 perl

So 13. Okt 19:07:29 CEST 2019
28993 fhem      20   0   69568  63852   7192 S  18,8  6,7  94:14.89 perl


mal sehen wie es weiter geht.
In Summe ist es nach 10 Stunden bisher noch entspannt:
KiB Mem :   949448 total,   246452 free,   104532 used,   598464 buff/cache
KiB Swap:   102396 total,   102396 free,        0 used.   736488 avail Mem

Gruss
    Stefan

So wie du dies beobachtest, schwebte mir auch vor was ich hier noch ergänzen wollte zum loggen. Hast du es automatisiert? Wenn Ja wie mit welchem code?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Oktober 2019, 20:32:32
ich habs auf die Schnelle eher primitiv gelöst:

PID=`ps -ef | grep fhem | grep -v grep | awk '{print $2}'`
echo PID = ${PID}
while true
do
date >> /opt/fhem/log/memlog
top -p ${PID} -b -n1 | grep fhem >> /opt/fhem/log/memlog
sleep 300
done


das als Skript mit nohup im Hintergrund gestartet.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 13 Oktober 2019, 22:57:42
Zitat von: StefanStrobel am 13 Oktober 2019, 08:45:18
Was für eine OS-Version bzw. Perl-Version läuft denn bei Dir?


Hallo Stefan,

Bei mir zeigte sich das Problem leider "durch die Bank"
Tritt auf bei Raspbian "Jessie" / "Stretch" / "Buster" ( Perl  5.20 / 5.24 / 5.28 )
Im Moment setzte ich auf Buster - Läuft momentan auf einem Pi 4B (hatte das Problem aber auch auf dem Pi 2B und dem Pi 3B).

Ich denke jedoch nicht, daß es mit Raspbian oder Perl direkt ursächlich zusammenhängt.

Verdammt Schade, daß das Phänomen bei Dir nicht auftritt. Ein Fehler, den man nicht sieht, ist schwer zu lokalisieren...  :(
2 Kollegen hier aus dem Forum haben jedoch das gleiche Problem und können mit meiner Config den Fehler reproduzieren...

LG,
Hardlife
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: scp am 14 Oktober 2019, 10:50:57
Zitat von: amenomade am 09 Oktober 2019, 18:44:06
Replacement ist richtig, aber ohne deine Versuche kann man nicht sehen, was Du probiert hast und ggf. korrigieren

Hi, danke für deine Antwort.
Welche Informationen müsste ich noch Posten ? Habe im Anhang nochmal das angelegte HTTMOD Modul und einen Ausschnitt aus meinem Sensor .
Habe diesen Beitrag seit dem Erscheinen verändert, Bilder angepasst etc..
:D

ZitatWas soll replacement02Value bedeuten?
Hier handelte es sich einfach um einen weiteren Test. Ich dachte, dass man mehrere Replacements anlegen kann. Deswegen habe ich das wohl testweise gemacht.

ZitatIm 2. Bild hat es doch funktioniert: er hat out112=%%value%% durch out11=$Meinevariablev1 ersetzt.
Für so ein Replacement brauchst Du eher replacementMode reading
Ja genau das 1:1 Erstetzen hat funktioniert :D.
Danke werde deinen Tipp mit replacementMode reading weiter verfolgen.
Hat aber noch nicht geklappt... wenn ich z.B. {Value("MeineVariablev1")} oder {ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2")}
als Replacement-Value einsetze kommt einfach gar nichts raus  ;D
Werde noch mal nachforschen


Habe hier unten noch mal die Tests die ich durchgeführt habe reingeschrieben. ( wäre jetzt zu schade für mich das alles zu löschen  ::))


Meine Tests:
Ziel ersetze mir %%Value%% im attr requestData.* durch das, was ich bei Replacement-Value eingetragen habe:
Test1:
Replacement-Value = {Value("MeineVariablev1")}
Ergebnis: %%Value%% wird durch den String "{Value("MeineVariablev1")}" ersetzt aber nicht den Wert von MeineVariablev1 ::)
Test2:
Replacement-Value =$MeineVariablev1
Ergebnis: %%Value%% wird einfach durch den String "MeineVariablev1" ersetzt aber nicht den Wert von MeineVariablev1 ::)
Test3:
Schreibe direkt in das attr requestData.*:
$var1
Ergebnis: $var1
Test4
warum wird für $value , 0ue eingesetz?
list value zeigt:  "No device named value found"





Hier das Listing von meiner Variablen die ich als Test in meine Post Requests einbauen möchte:
Es geht eigentlich nur um den Wert "4444"

Internals:
   FUUID      5d9ca988-f33f-05c5-64e2-ad295f73f7fcaf38
   NAME       MeineVariablev1
   NR         50
   STATE      4444
   TYPE       dummy
   READINGS:
     2019-10-09 14:06:59   state           4444
Attributes:
   readingList {ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}
   room       Variablen



Habe noch eine andere variable angelegt:
Internals:
   FUUID      5d9ded75-f33f-05c5-9480-d48b85a1b95e59ff
   NAME       var1
   NR         51
   STATE      hallo
   TYPE       dummy
   READINGS:
     2019-10-09 16:24:00   state           hallo
Attributes:
   readingList hea
   room       Variablen


Und hier das Listing für mein HTTPMOD device namens postv4


Internals:
   BUSY       0
   CHANGED   
   DEF        https://ptsv2.com/t/41o90-1570609878/post 10
   FUUID      5d9ca124-f33f-05c5-e79a-71856d63179977f1
   Interval   10
   LASTSEND   1571122834  [Titel anhand dieser ISBN in Citavi-Projekt übernehmen] .40339
   MainURL    https://ptsv2.com/t/41o90-1570609878/post
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       postv4
   NOTIFYDEV  global
   NR         49
   NTFY_ORDER 50-postv4
   ReplacementEnabled 1
   STATE     
   TRIGGERTIME 1571122844.40237
   TRIGGERTIME_FMT 2019-10-15 09:00:44
   TYPE       HTTPMOD
   addr       https://ptsv2.com:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       param1=888888&param2=2222&param3=WMBUS_SON_23275669_22_8:1_value&param4={ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}&param6={ReadingsVal("MeineVariablev1","state","2");;}&param7=$MeineVariablev1&param999=$replacement01Value&param99999={return 1;;}&out999=0ue&out112={Value("MeineVariablev1")}&param90=$MeineVariable1
   displayurl https://ptsv2.com/t/41o90-1570609878/post
   header     
   host       ptsv2.com
   httpheader HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
X-Cloud-Trace-Context: 3fc62b5bc023e885d405ba88e73f0fd3
Date: Tue, 15 Oct 2019 07:00:34 GMT
Server: Google Frontend
Content-Length: 41
   httpversion 1.0
   hu_blocking 0
   hu_filecount 242
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /t/41o90-1570609878/post
   protocol   https
   redirects  0
   timeout    2
   url        https://ptsv2.com/t/41o90-1570609878/post
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       param1=888888&param2=2222&param3=WMBUS_SON_23275669_22_8:1_value&param4={ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}&param6={ReadingsVal("MeineVariablev1","state","2");;}&param7=$MeineVariablev1&param999=$replacement01Value&param99999={return 1;;}&out999=$value&out112=%%value%%&param90=$MeineVariable1
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://ptsv2.com/t/41o90-1570609878/post
     value      0
   sslargs:
Attributes:
   enableControlSet 1
   replacement01Mode text
   replacement01Regex %%value%%
   replacement01Value {Value("MeineVariablev1")}
   replacement02Value var1
   requestData.* param1=888888&param2=2222&param3=WMBUS_SON_23275669_22_8:1_value&param4={ReadingsVal("WMBUS_SON_23275669_22_8","1_value","2");;}&param6={ReadingsVal("MeineVariablev1","state","2");;}&param7=$MeineVariablev1&param999=$replacement01Value&param99999={return 1;;}&out999=$value&out112=%%value%%&param90=$MeineVariable1
   room       Internet
   set01Data  {"set" :{"34.3118.value" :"$val" }}
   set01Name  schickeWert
   set01URL   https://ptsv2.com/t/41o90-1570609878/post
   setHeader1 Content-Type: application/json
   userattr   replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Value set01Data set01Name set01URL setHeader1






Falls noch mehr Informationen notwendig sind könnt Ihr mir bitte sagen welche. Evtl. irgendein Log etc.

Vielen Dank  ;D

Anhang: 2 Bildausschnitte und 1 PDF mit mehr Beschreibung
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: HomeAuto_User am 14 Oktober 2019, 15:37:02
Hallo Stefan,
wie zu erwarten schoss ich mir wieder beim einschalten des HTTPMOD mit den etlichen Readings FHEM ab bis zum
Cannot fork: Cannot allocate memory

Hier mal die Diagramme und in Kurzform
Start HTTPMOD FHEM - htop info RAM - FHEM 9%
END HTTPMOD FHEM  - htop info RAM - FHEM 45%


Ich habe nun FHEM neu gestartet und HTTPMOD auf disable und es läuft wieder normal ohne Anstieg.
Nun werde ich mal versuchen noch auf anderem Wege zu protokollieren.

Welche Libs oder andere Funktionen nutzt HTTPMOD? Können wir dort vielleicht Versionen vergleichen oder einzeln Performance erfragen?

MfG Marco
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 Oktober 2019, 19:20:59
Zitat von: scp am 14 Oktober 2019, 10:50:57
Hi, danke für deine Antwort.
Welche Informationen müsste ich noch Posten ? Habe im Anhang nochmal das angelegte HTTMOD Modul und einen Ausschnitt aus meinem Sensor .
:D
wenn ich für meinen Replacement-Value eine Zahl eingebe wird %%Value%% durch diese Zahl erfolgreich ersetzt. Wenn ich anstatt einer Zahl bei dem Replacement Value dann aber eine Variable eingebe geht das nicht. Z.B. : {Value("MeineVariablev1")}
Dann erscheint in meinem zu sendenden "data" einfach der Wert: 0ue  :o

Falls noch mehr Informationen notwendig sind könnt Ihr mir bitte sagen welche. Evtl. irgendein Log etc.

Vielen Dank  ;D
Normalerweise postet man ein "list" vom betroffenen Device zwischen Code Tags (das # Zeichen im Edit Menü)
Somit kann man gut lesen, und kann man auch copy/paste machen, um zu erklären und korrigieren.

Im 2. Bild hat es doch funktioniert: er hat out112=%%value%% durch out11=$Meinevariablev1 ersetzt.
Für so ein Replacement brauchst Du eher replacementMode reading

Was soll replacement02Value bedeuten?

Poste mal ein "list" von deinem HTTPMOD und dann kann ich direkt deine Parameter verbessern, ohne das ganze wiede eintippen zu müssen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 Oktober 2019, 20:34:31
Hallo Hardlife und Marco,

mit der vollen Konfiguration von Hardlife (inkl. Readingsgroup) konnte ich den Speicheranstieg jetzt nachvollziehen.
Seit Sonntag früh ist der belegte Speicherplatz von 67 auf 71 MB gestiegen.
Jetzt versuche ich es noch weiter einzugrenzen und die Readingsgroup wegzulassen.
Was die Bibliotheken angeht, so nutzt HTTPMOD zunächst nur recht wenig:


use Time::HiRes qw(gettimeofday);   
use Encode qw(decode encode);
use HttpUtils;
use SetExtensions qw/ :all /;


weitere werden nur bei Bedarf dazugeladen (z.B. JSON und XML).
Bei reinem RegexParsen sollte das nicht der Fall sein.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 16 Oktober 2019, 22:51:04
Ich kann den speicheranstieg bei mir nachvollziehen. Falls es eine Version mit erweiterten debugausgaben gibt, kann ich die gern testen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 Oktober 2019, 22:52:19
Hallo,

Nachdem Rudi gerade ein Speicherloch in HttpUtils_gethostbyname gefixt hat, sollten wir erst mal updaten und dann erneut testen, ob das Problem sich dadurch erledigt hat.
Siehe https://forum.fhem.de/index.php/topic,84372.675.html

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 18 Oktober 2019, 22:59:03
Wenn ich das TV Device einbinde, habe ich mit und ohne dnsServer einen Anstieg (nach dem Patch ebenfalls). Schalte ich das Httpmod Device auf disable bleibt die Speicherauslastung gleich. Reduziere ich die Anzahl der Regex Attribute, wird der Anstieg weniger steil. Wenn ich das Intervall verkleinere wird der Anstieg größer.
Ich werde jetzt noch mal alle Regex löschen und gucken, ob allein durch die http Abfragen der Speicherverbrauch steigt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Oktober 2019, 00:22:21
Hallo,

ich kann den Speicheranstieg mit der vollen TV_Programme-Konfiguration bestätigen und versuche ebenfalls ihn weiter einzugrenzen.

Zum Testen habe ich das angehängte HTTPMOD etwas erweitert:

Das Attribut dumpBuffers speichert für jede gelesene Response den Buffer in eine eigene Datei mit fortlaufender Nummer (buffer1.txt, buffer2.txt etc.). So kann man diese später wieder schneller abrufen ohne jedes Mal den eigentlichen Server zu belästigen und man ist unabhängig von Netzwerk-Requests etc. Dem Attribut gibt man einen existierenden relativen Pfad für die Dateiablage. Ich habe z.B. /opt/fhem/dumps/ angelegt und das Attribut auf dumps gesetzt.

Das Attribut memReading erzeugt ein Reading mit Namen Fhem_Mem und belegt dieses bei jedem Read mit dem VmSize-Wert aus dem Proc-Filesystem für den Fhem-Prozess. Dann hat man den Plot gleich in Fhem:

attr TV_Programme memReading 1
attr TV_ProgrammePT memReading 1
define FileLogMemDebug FileLog ./log/MemDebug.log TV_Programme:Fhem.*
define FileLogMemDebug2 FileLog ./log/MemDebug2.log TV_ProgrammePT:Fhem.*
define SVG_FileLogMemDebug_1 SVG FileLogMemDebug:SVG_FileLogMemDebug_1:CURRENT


Um dann die Dateien wieder zu lesen verwende ich ein Replacement:

define TV_Programme HTTPMOD file://dumps/buffer%%n%%.txt 5
attr TV_Programme replacement01Mode expression
attr TV_Programme replacement01Regex %%n%%
attr TV_Programme replacement01Value (defined($hash->{BufCounter}) ? ($hash->{BufCounter} > 90 ? ($hash->{BufCounter} = 0) : $hash->{BufCounter}++)  : ($hash->{BufCounter} = 0))


Den Vergleich >90 muss man anpassen. Bei mir sind es 90 Dateien, die ich der Reihe nach wieder einlese. Dann beginnt es von vorn.
Gerade prüfe ich nochmal alles ohne readingsGroups durch. Die scheinen einen Einfluss zu haben. Mal sehen wie es sich entwickelt.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 20 Oktober 2019, 23:30:33
Ich habe mal alle Regex Attribute in dem Httpmod Device gelöscht und der Speicherverbrauch ist jetzt gleichbleibend. Ich vermute deshalb das Problem in dem Teil des Moduls, in dem die Regex Ausdrücke auf die Webseite losgelassen werden. Ich werde jetzt mal die Testversion installieren...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 21 Oktober 2019, 10:28:53
Ich habe es seit gestern laufen (nur das TV_Programme Device) und man sieht deutlich den Anstieg. Davor gab es keinen Anstieg, dort waren die regex Attribute gelöscht.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 21 Oktober 2019, 21:42:45
Habe jetzt 86 Dateien und kann diese wie beschrieben alle 5s einlesen. Pro Vorgang werden rund 4mb mehr RAM belegt. Nach ein paar Minuten ist der RAM komplett weg. :)
Ich würde jetzt gern ein paar Dinge im Modul raus nehmen, um das Problem einzugrenzen. Kannst du mir vielleicht ein paar Funktionen nennen bei denen ich ansetzen kann? Ich würde mich nur ungern in fremden Code einlesen müssen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 Oktober 2019, 22:11:37
Hallo,

Da muss ich mich auch erst tiefer reindenken.
Wichtig wäre auf jeden Fall zunächst alle Geräte drum herum aus der Konfiguration zu entfernen.
ReadingGroups, doifs, notify, statistics, average und was sonst noch die Events weiterverarbeitet kann die Messungen verfälschen.
Eventuell komme ich morgen Abend dazu mir das genauer anzusehen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 21 Oktober 2019, 23:06:26
Da läuft sonst nix drauf was die besagten Dinge angeht. Es werden nur ein paar Sensoren eingelesen, die kann ich aber nicht abschalten, die sind wichtig für meine Steuerung. Ansonsten komme ich hoffentlich morgen dazu ein wenig rum zu spielen und Dinge Stück für Stück rauszunehmen. Ich fange beim untersten Lvl an (setzen der Readings) und arbeite mich dann hoch.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Oktober 2019, 08:30:27
4MB je Vorgang sind auf jeden Fall immens.
Das kann ich auf meinem System nicht nachvollziehen.
Ich muss wohl noch einen separaten Pi nur für diesen Test aufsetzen.
Leider bin ich diese Woche zu viel unterwegs um das machen zu können.
Daher bin ich gespannt was bei Dir herauskommt.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 22 Oktober 2019, 23:28:42
Ich denke ich habe was gefunden. Sobald ich diese Zeile (1915 in deiner angehängten Datei) auskommentiere gibt es keinen Anstieg mehr:

@matchlist = ($buffer =~ /$regex/);

Um sicherzugehen das es nicht mit der weitergehenden Verarbeitung zu tun hat, habe ich weiter unten die folgenden Zeilen:

    my $match = @matchlist;
    if ($match) {


so umgeschrieben:

    my $match = 0; #@matchlist;
    if (0) {


Dadurch wird der Code unten nicht mehr ausgeführt. Ist jetzt die Zeile 1915 drin, steigt der Speicherverbrauch massiv an. Ist sie draussen ist Ruhe.


Darüber hinaus habe ich festgestellt, das die zuvor erzeugten Dateien buffer<zahl>.txt mit einer Fehlermeldung überschrieben worden sind: Buffer0.txt nicht gefunden. Das wiederum bedeutet, das es keine Matches gegeben hat. buffer0.txt wird auch nie erzeugt, sondern es wird immer mit buffer1.txt angefangen.

Muss ich das Attribut dumpBuffers eigentlich löschen bevor ich die Request an die Webseite auf die erzeugten Dateien umstelle oder wie verhindere ich, das die einmal erzeugten Dateien wieder überschrieben werden?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 23 Oktober 2019, 21:21:39
Problem gefunden und gelöst. Kurze Beschreibung siehe hier:

https://forum.fhem.de/index.php/topic,84372.msg986397.html#msg986397 (https://forum.fhem.de/index.php/topic,84372.msg986397.html#msg986397)

Bei Bedarf kann ich weiter Infos liefern.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 Oktober 2019, 18:32:37
Hallo mumpitzstuff,

zunächst mal vielen Dank für Dein Engagement.
Jetzt wissen wir schon mal dass es ein Perl-Bug ist, der leider nicht auf allen Systemen und von mehreren Faktoren abhängig zuschlägt. Ich würde die weiteren Details der sinnvollsten Problemlösung im Memory-Leak-Thread weiter diskutieren und eine neue Version einchecken, sobald ich eine Lösung habe, die ich komplett durchschaut habe und bei der ich sicher bin, dass sie keine anderen Seiteneffekte hat.

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Oktober 2019, 16:36:49
Hallo,

anbei eine neue Version von HTTPMOD falls jemand schon mal testen möchte.
Folgendes ist neu / hat sich geändert:

1) Regexes werden beim Verarbeiten der Attribute bereits vorcompiliert und gespeichert, so dass sie später nicht bei jedem Parsen einer Seite neu compiliert werden müssen. Ich hoffe dass das die aktuellen Memory-Leaks in Perl umgeht, bin aber selbst noch am Testen.

2) Neues Attribut regexDecode
Damit kann man bei Bedarf auch den Wert eines Regex-Attributs durch die Perl-decode-Funktion schicken.
Ein typischer Wert wäre utf-8, je nach Plattform kann aber auch ein anderer Wert angebracht sein.

3) Neues Attribut bodyDecode
Damit kann man den Body der gelesenen HTTP-Response durch die Perl-Funktion decode schicken.
Hier kann man direkt ein Encoding wie utf-8 oder ISO-8859-1 angeben. Man kann aber als Wert auch auto angeben.
Dann sucht HTTPMOD nach einem charset-Header und übergibt den dort gefundenen Wert an decode.

Noch ein Hinweis zu den Test-Features, die ich bereits grob beschrieben habe:
Das Attribut dumpBuffers sollte gelöscht werden, bevor man die erzeugten Dateien wieder einliest.
Das Attribut memReading funktioniert sicher nicht auf allen Plattformen. Ich habe es auf einem Pi mit Stretch am Laufen um den von Fhem verwendeten Hauptspeicher zu überwachen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: krikan am 08 November 2019, 08:52:03
Hallo!

Für die Steuerung eines Saugroboters per REST-API benötige ich die HTTP Mehode PUT. In https://forum.fhem.de/index.php/topic,45176.msg909048.html#msg909048 gibt es einen Patch um das in HTTPMOD einzubauen. Der Patch hat es aber afaik noch nicht in das Modul geschafft. Kommt das noch?

Eine Integration von HTTP PUT in HTTPMOD würde u.a. die Verteilung von Geräte-Vorlagen per AttrTemplate vereinfachen. Meine derzeitige Lösung, das per curl oder direktem Aufruf von HttpUtils-Funktionen umzusetzen, führt zu ziemlichen Klimmzügen und mehreren FHEM-Devices.

Gruß, Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OdfFhem am 08 November 2019, 11:29:48
@StefanStrobel

Hallo,

aktuell "spiele" ich ein wenig mit dem offiziellen HTTPMOD-Modul (# $Id: 98_HTTPMOD.pm 19978 2019-08-10 12:51:48Z StefanStrobel $).

Dabei ist mir aufgefallen, dass es z.B. beim Attribut readingMaxAgeReplacementMode folgende Ungereimtheiten gibt:

2019.11.08 10:11:35 3: test_eq3: added hint :text,reading,internal,expression,delete to attr readingMaxAgeReplacementMode in userattr list

Keine Ahnung, ob sich diese Auffälligkeit auch noch bei anderen Attributen zeigt ...
Bei der Verwendung von readingMaxAgeReplacementMode für die Ausführung beim Homematic-Firmware-Checker läuft alles wie erwartet ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 November 2019, 12:35:21
Hallo,

anbei eine neue Version zu Testen.

Neu ist die Unterstützung für HTTP PUT und ein Bugfix bei der Verwaltung der userattr-Attribute.
Zudem sind die oben beschriebenen Änderungen wegen dem Perl-Memory-Leak enthalten.

Es wäre schön wenn ein paar leute die Version testen und Feedback geben könnten.
Wenn es keine neuen Probleme gibt, würde ich die neue Version in ein paar Tagen einchecken.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 November 2019, 12:48:29
Irgendwelche Abhängigkeit? Ich würde gerne testen, aber mein Fhem ist nicht das aktuellste
98_HTTPMOD.pm 19978 2019-08-10 12:51:48Z StefanStrobel

doif.js                    15546 2017-12-03 09:57:42Z Ellert
fhemweb.js                 20226 2019-09-22 07:51:07Z rudolfkoenig
fhemweb_readingsGroup.js   15189 2017-10-03 17:53:27Z justme1968
svg.js                     19667 2019-06-20 13:39:55Z rudolfkoenig


HttpUtils.pm 20037 2019-08-21 05:34:45Z rudolfkoenig
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 November 2019, 16:00:44
Sollte kein Problem sein.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 November 2019, 17:42:26
Beim "reload 98_HTTPMOD" kriege ich
Too many arguments for main::HTTPMOD_AddToQueue at ./FHEM/98_HTTPMOD.pm line 1599, near "))"
BEGIN not safe after errors--compilation aborted at ./FHEM/98_HTTPMOD.pm line 1784.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 November 2019, 22:06:06
Ja, wegen der Erweiterung für HTTP PUT hat die Funktion einen zusätzlichen Parameter bekommen.
Bei einem Reload gibt es dann das erste Mal eine Fehlermeldung.
Nach einem Restart sollte alles passen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 November 2019, 22:50:20
Dieses HTTPMOD funktioniert nicht mehr:
defmod Gezeiten_Papenburg HTTPMOD http://exnatura.de:9099/locations/2171.html 0
attr Gezeiten_Papenburg userattr reading101Name reading101RegOpt reading101Regex reading102Name reading102RegOpt reading102Regex
attr Gezeiten_Papenburg enableControlSet 1
attr Gezeiten_Papenburg reading101Name Hochwasser
attr Gezeiten_Papenburg reading101RegOpt gm
attr Gezeiten_Papenburg reading101Regex (^[\d\. :]{16}).*?Hochwasser
attr Gezeiten_Papenburg reading102Name Niedrigwasser
attr Gezeiten_Papenburg reading102RegOpt gm
attr Gezeiten_Papenburg reading102Regex (^[\d\. :]{16}).*?Niedrigwasser
attr Gezeiten_Papenburg room HTTPMODs
attr Gezeiten_Papenburg verbose 5


In der Log kriege ich:
2019.11.09 22:48:04 5: Gezeiten_Papenburg: UpdateReadingList created list of reading.* nums to parse during getUpdate as 101 102
2019.11.09 22:48:04 5: Gezeiten_Papenburg: Read starts parsing response to update with defined readings: 101,102
2019.11.09 22:48:04 4: Gezeiten_Papenburg: GetRegex found precompiled Regex for reading101
2019.11.09 22:48:04 5: Gezeiten_Papenburg: ExtractReading Hochwasser with regex /(?^:(^[\d\. :]{16}).*?Hochwasser)/gm ...
2019.11.09 22:48:04 5: Gezeiten_Papenburg: ExtractReading Hochwasser did not match
2019.11.09 22:48:04 4: Gezeiten_Papenburg: GetRegex found precompiled Regex for reading102
2019.11.09 22:48:04 5: Gezeiten_Papenburg: ExtractReading Niedrigwasser with regex /(?^:(^[\d\. :]{16}).*?Niedrigwasser)/gm ...
2019.11.09 22:48:04 5: Gezeiten_Papenburg: ExtractReading Niedrigwasser did not match
2019.11.09 22:48:04 4: Gezeiten_Papenburg: Read response to update didn't match any Reading
2019.11.09 22:48:04 5: Gezeiten_Papenburg: HandleSendQueue called, qlen = 0


Mit der alte Version (die jetzige aus svn):
2019.11.09 22:51:03 5: Gezeiten_Papenburg: UpdateReadingList created list of reading.* nums to parse during getUpdate as 101 102
2019.11.09 22:51:03 5: Gezeiten_Papenburg: Read starts parsing response to update with defined readings: 101,102
2019.11.09 22:51:03 5: Gezeiten_Papenburg: ExtractReading Hochwasser with regex /(^[\d\. :]{16}).*?Hochwasser/gm ...
2019.11.09 22:51:03 5: Gezeiten_Papenburg: 8 capture group(s), matchlist = 09.11.2019 14:44,10.11.2019 03:20,10.11.2019 15:17,11.11.2019 04:08,11.11.2019 15:50,12.11.2019 04:56,12.11.2019 16:24,13.11.2019 05:45
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-1 sets Hochwasser-1 to 09.11.2019 14:44
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-2 sets Hochwasser-2 to 10.11.2019 03:20
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-3 sets Hochwasser-3 to 10.11.2019 15:17
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-4 sets Hochwasser-4 to 11.11.2019 04:08
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-5 sets Hochwasser-5 to 11.11.2019 15:50
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-6 sets Hochwasser-6 to 12.11.2019 04:56
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-7 sets Hochwasser-7 to 12.11.2019 16:24
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading101-8 sets Hochwasser-8 to 13.11.2019 05:45
2019.11.09 22:51:03 5: Gezeiten_Papenburg: ExtractReading Niedrigwasser with regex /(^[\d\. :]{16}).*?Niedrigwasser/gm ...
2019.11.09 22:51:03 5: Gezeiten_Papenburg: 8 capture group(s), matchlist = 09.11.2019 21:23,10.11.2019 09:08,10.11.2019 22:06,11.11.2019 09:45,11.11.2019 22:49,12.11.2019 10:21,12.11.2019 23:32,13.11.2019 10:57
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-1 sets Niedrigwasser-1 to 09.11.2019 21:23
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-2 sets Niedrigwasser-2 to 10.11.2019 09:08
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-3 sets Niedrigwasser-3 to 10.11.2019 22:06
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-4 sets Niedrigwasser-4 to 11.11.2019 09:45
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-5 sets Niedrigwasser-5 to 11.11.2019 22:49
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-6 sets Niedrigwasser-6 to 12.11.2019 10:21
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-7 sets Niedrigwasser-7 to 12.11.2019 23:32
2019.11.09 22:51:03 4: Gezeiten_Papenburg: ExtractReading for reading102-8 sets Niedrigwasser-8 to 13.11.2019 10:57
2019.11.09 22:51:03 4: Gezeiten_Papenburg: Read response to update matched Reading(s) Hochwasser-1 Hochwasser-2 Hochwasser-3 Hochwasser-4 Hochwasser-5 Hochwasser-6 Hochwasser-7 Hochwasser-8 Niedrigwasser-1 Niedrigwasser-2 Niedrigwasser-3 Niedrigwasser-4 Niedrigwasser-5 Niedrigwasser-6 Niedrigwasser-7 Niedrigwasser-8
2019.11.09 22:51:03 5: Gezeiten_Papenburg: HandleSendQueue called, qlen = 0


Warum wird die Regex "ergänzt"?

EDIT: ansonsten funktionieren 10 andere HTTPMOD problemlos
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 November 2019, 16:25:56
Hallo amenomade,

Um ein Memory-Leak in aktuellen Perl-Versionen zu umgehen versuche ich im Modul die Regexes gleich beim Verarbeiten der Attribute als compilierte Regexes zu speichern:

$hash->{CompiledRegexes}{$aName} = qr/$aVal/;


Die Ausgabe einer compilierten Regex sieht später etwas anders aus. Sie sollte sich aber genauso verhalten.
Das Problem dabei ist aber offenbar, dass die Regex-Optionen sich so nicht alle verwenden lassen.
Bei //g ist das kein Problem, //m kann man aber später beim Matchen mit einer compilierten Regex nicht mehr anhängen.
Deshalb klappt es bei Dir nicht mehr.
Schade...

Die alternativen Ideen um den Memory-Leak zu umgehen können meiner Meinung nach leider auch Nebenwirkungen haben.
Ich werde wohl die Compilierung der Regexes erst später zur Laufzeit machen und dann die Optionen bei qr// mit angeben müssen.
Neue Version ist auf dem Weg.

Vielen dank erstmal fürs Testen!

Gruss
   Stefan




Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 10 November 2019, 17:41:14
Kann man vielleicht RegOpt m  in (?m) in der Regex umwandeln?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 10 November 2019, 18:07:29
Also, es funktioniert mit der neue Version mit:
attr Gezeiten_Papenburg reading101RegOpt g
attr Gezeiten_Papenburg reading101Regex (?m)(^[\d\. :]{16}).*?Hochwasser
attr Gezeiten_Papenburg reading102RegOpt g
attr Gezeiten_Papenburg reading102Regex (?m)(^[\d\. :]{16}).*?Niedrigwasser


Log:
2019.11.10 18:04:17 5: Gezeiten_Papenburg: UpdateReadingList created list of reading.* nums to parse during getUpdate as 101 102
2019.11.10 18:04:17 5: Gezeiten_Papenburg: Read starts parsing response to update with defined readings: 101,102
2019.11.10 18:04:17 4: Gezeiten_Papenburg: GetRegex found precompiled Regex for reading101
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading Hochwasser with regex /(?^:(?m)(^[\d\. :]{16}).*?Hochwasser)/g ...
2019.11.10 18:04:17 5: Gezeiten_Papenburg: 8 capture group(s), matchlist = 10.11.2019 15:17,11.11.2019 04:08,11.11.2019 15:50,12.11.2019 04:56,12.11.2019 16:24,13.11.2019 05:45,13.11.2019 16:58,14.11.2019 06:34
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-1 sets Hochwasser-1 to 10.11.2019 15:17
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-2 sets Hochwasser-2 to 11.11.2019 04:08
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-3 sets Hochwasser-3 to 11.11.2019 15:50
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-4 sets Hochwasser-4 to 12.11.2019 04:56
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-5 sets Hochwasser-5 to 12.11.2019 16:24
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-6 sets Hochwasser-6 to 13.11.2019 05:45
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-7 sets Hochwasser-7 to 13.11.2019 16:58
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading101-8 sets Hochwasser-8 to 14.11.2019 06:34
2019.11.10 18:04:17 4: Gezeiten_Papenburg: GetRegex found precompiled Regex for reading102
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading Niedrigwasser with regex /(?^:(?m)(^[\d\. :]{16}).*?Niedrigwasser)/g ...
2019.11.10 18:04:17 5: Gezeiten_Papenburg: 8 capture group(s), matchlist = 10.11.2019 09:08,10.11.2019 22:06,11.11.2019 09:45,11.11.2019 22:49,12.11.2019 10:21,12.11.2019 23:32,13.11.2019 10:57,14.11.2019 00:15
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-1 sets Niedrigwasser-1 to 10.11.2019 09:08
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-2 sets Niedrigwasser-2 to 10.11.2019 22:06
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-3 sets Niedrigwasser-3 to 11.11.2019 09:45
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-4 sets Niedrigwasser-4 to 11.11.2019 22:49
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-5 sets Niedrigwasser-5 to 12.11.2019 10:21
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-6 sets Niedrigwasser-6 to 12.11.2019 23:32
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-7 sets Niedrigwasser-7 to 13.11.2019 10:57
2019.11.10 18:04:17 5: Gezeiten_Papenburg: ExtractReading for reading102-8 sets Niedrigwasser-8 to 14.11.2019 00:15
2019.11.10 18:04:17 4: Gezeiten_Papenburg: Read response matched 16, unmatch 0 Reading(s)
2019.11.10 18:04:17 5: Gezeiten_Papenburg: Read response to update matched Hochwasser-1 Hochwasser-2 Hochwasser-3 Hochwasser-4 Hochwasser-5 Hochwasser-6 Hochwasser-7 Hochwasser-8 Niedrigwasser-1 Niedrigwasser-2 Niedrigwasser-3 Niedrigwasser-4 Niedrigwasser-5 Niedrigwasser-6 Niedrigwasser-7 Niedrigwasser-8


Mit dem 's' modifier sollte es auch so gehen. Und in Kombination: (?xims) auch. Nur 'g' kann man nicht so machen. Das hängt mMn an den kleinen Unterschied vom 'g' modifier: siehe hier https://www.perlmonks.org/?node_id=608925
Zitatg affects the operation (match or substitution), not the regexp
xism options are toggles.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 November 2019, 20:19:18
Hallo,

anbei ein neuer Versuch. Die Regex-Options werden jetzt je nach Art beim Compilieren der Regexes oder später beim Anwenden verwendet.
Damit sollten hoffentlich die bisherigen Definitionen ohne Anpassung laufen.
Freue mich über weiteres Testen und Feeback :-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hardlife am 12 November 2019, 19:09:48
Zitat von: StefanStrobel am 11 November 2019, 20:19:18
anbei ein neuer Versuch. Die Regex-Options werden jetzt je nach Art beim Compilieren der Regexes oder später beim Anwenden verwendet.
Damit sollten hoffentlich die bisherigen Definitionen ohne Anpassung laufen.

Ich habe jetzt die Entwicklung nicht im Detail verfolgt...
Aber ich habe die Version seit Vorgestern am Laufen und damit ist kein Speicheranstieg mehr festzustellen...  :)

Vielen Dank für al die Arbeit, die da reingesteckt wurde.
Vielleicht kann man das Modul bei Zeiten nach ein paar Tests ja mit den offiziellen Sourcen ausliefern.

LG,
Hardlife
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 12 November 2019, 22:09:51
Ich habe eine Frage zu HTTPMOD. Ich lese ein reading via regex ein und manchmal gibt es ein und manchmal gibt es mehrere matches. Demzufolge wird einmal in die Readings X10-1 bis X10-3 eingelesen, ein ander Mal dagegen in das Reading X10.

Gibt es einen einfachen Weg dafür zu sorgen, dass bei genau einem Match in X10-1 und nicht X10 geschrieben wird?



Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      5dc9c0f6-f33f-1115-c949-88ea61862d72d796
   Interval   0
   LASTSEND   1573592640.69029
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       BVG
   NOTIFYDEV  global
   NR         359156
   NTFY_ORDER 50-BVG
   STATE      <font color="green">27</font> / <font color="green">47</font> / <font color="green">51</font>
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       https://transport.stefan-biermann.de:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=900051371&provider=Bvg&limit=20
   header     
   host       transport.stefan-biermann.de
   httpheader HTTP/1.1 200 OK
Date: Tue, 12 Nov 2019 21:04:01 GMT
Server: Apache/2.4.29 (Ubuntu)
Strict-Transport-Security: max-age=31536000; includeSubDomains
Content-Type: application/json
Content-Length: 655
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 16
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /publictransportapi/rest/departure/FHEM?from=900051371&provider=Bvg&limit=20
   protocol   https
   redirects  0
   timeout    30
   url        https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=900051371&provider=Bvg&limit=20
   value      0
   OLDREADINGS:
   QUEUE:
   READINGS:
     2019-11-12 22:04:01   X10             18
     2019-11-12 21:35:13   X10-1           27
     2019-11-12 21:35:13   X10-2           47
     2019-11-12 21:31:16   X10-3           51
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       get01
     url        https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=900051371&provider=Bvg&limit=20
     value      0
   defptr:
     readingBase:
       X10        get
       X10-1      get
       X10-2      get
       X10-3      get
     readingNum:
       X10        01
       X10-1      01
       X10-2      01
       X10-3      01
     readingOutdated:
     readingSubNum:
       X10-1      -1
       X10-2      -2
       X10-3      -3
     requestReadings:
       get01:
         X10        get 01
         X10-1      get 01-1
         X10-2      get 01-2
         X10-3      get 01-3
   sslargs:
Attributes:
   get01Name  X10
   get01Name-01 X10-1
   get01Name-02 X10-2
   get01Name-03 X10-3
   get01RegOpt g
   get01Regex \[\"X10\"\,\"S\+U Zoologischer Garten\"\,\"(\d\d)\"\]
   get01URL   https://transport.stefan-biermann.de/publictransportapi/rest/departure/FHEM?from=900051371&provider=Bvg&limit=20
   group      Info
   room       Info
   stateFormat { FarbeEinfuegen(ReadingsNum($name,"X10-1",0))." / ".FarbeEinfuegen(ReadingsNum($name,"X10-2",0))." / ".FarbeEinfuegen(ReadingsNum($name,"X10-3",0)) }
   timeout    30
     userattr   get01Name get01Name-01 get01Name-02 get01Name-03 get01RegOpt get01Regex get01URL reading01RegOp
webcmd holen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 November 2019, 22:22:33
Nicht, dass ich wüsste. Aber andersrum ist es vielleicht möglich, indem Du get01Name-01 auf X10 setzt.
Zu probieren...

EDIT: wobei... was passiert, wenn Du get01Name auf X10-1 setzt?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 November 2019, 22:31:51
(get|set|reading)[0-9]+AlwaysNum

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 November 2019, 22:45:42
Aha! Schon wieder was gelernt
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 13 November 2019, 06:28:16
Zitat von: StefanStrobel am 12 November 2019, 22:31:51
(get|set|reading)[0-9]+AlwaysNum
wunderbar, passt - danke!


Gesendet von iPad mit Tapatalk Pro
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 November 2019, 15:48:04
Hallo,

nachdem keine Bug-Meldungen mehr kamen, habe ich die neue Version gerade eingecheckt.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: meier81 am 19 November 2019, 11:56:03
Hallo an alle,

habe gestern mein fhem geupdatet und promt Fehler bezüglich der neuen HTTPMOD-Version bekommen.

Hier mal meine Config (hab nur einen Benzinpreis angefügt):


define Agip HTTPMOD http://www.clever-tanken.de/tankstelle_details/1531 900
attr Agip userattr reading01Name reading01Regex reading02Name reading02Regex readingOExpr timeout
attr Agip enableControlSet 1
attr Agip event-on-change-reading .*
attr Agip group Benzinpreise
attr Agip icon gasoline
attr Agip reading01Name Diesel
attr Agip reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Agip reading02Name SuperE10
attr Agip reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Agip readingOExpr $val =~ s/<[\d\D]+>//;;$val
attr Agip room Allgemein->Benzinpreise
attr Agip stateFormat D:Diesel€;; E10:SuperE10€
attr Agip timeout 5


und hier der Auszug aus dem Log:


2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: Backslash found where operator expected at (eval 1371) line 1, near "d\"

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: String found where operator expected at (eval 1371) line 1, near "}"current-price-.""

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: (Missing operator before "current-price-."?)

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: Backslash found where operator expected at (eval 1371) line 1, near "9\"

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: (Missing operator before \?)

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: Backslash found where operator expected at (eval 1372) line 1, near "d\"

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: String found where operator expected at (eval 1372) line 1, near "}"current-price-.""

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: (Missing operator before "current-price-."?)

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: Backslash found where operator expected at (eval 1372) line 1, near "9\"

2019.11.19 11:53:33 3: Agip: PrecompileRegexAttr for reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9]) created warning: (Missing operator before \?)


Kann mir da von euch jemand weiterhelfen, bin mit dem regex-Sachen nicht so der Crack.

Danke und Gruß

Markus
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: meier81 am 19 November 2019, 14:55:27
So,

hab eben nochmals geschaut und das ganze wie im Wiki-stehend abgeändert:


defmod Agip HTTPMOD http://www.clever-tanken.de/tankstelle_details/1531 900
attr Agip userattr reading01OExpr reading02OExpr
attr Agip enableControlSet 1
attr Agip event-on-change-reading .*
attr Agip group Benzinpreise
attr Agip icon gasoline
attr Agip reading01Name Diesel
attr Agip reading01OExpr $val + 0.009
attr Agip reading01Regex "price-type-name">Diesel<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr Agip reading02Name SuperE10
attr Agip reading02OExpr $val + 0.009
attr Agip reading02Regex "price-type-name">Super.E10<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr Agip room Allgemein->Benzinpreise
attr Agip stateFormat D: Diesel€;; E10: SuperE10€
attr Agip timeout 5


So funktioniert jetzt alles, da war meine Definition wohl etwas älter bzw. etwas anders.

Gruß

Markus
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: meier81 am 19 November 2019, 15:27:05
Ich hab nur noch eine Info für euch, hab eben beim durchschauen des LOGs folgende Meldungen nach dem Neustart gefunden:


2019.11.19 15:06:59 1: PERL WARNING: "my" variable $fDefault masks earlier declaration in same scope at ./FHEM/98_HTTPMOD.pm line 2813, <$fh> line 236.


und


2019.11.19 15:08:00 1: PERL WARNING: Use of uninitialized value $regopt in substitution (s///) at ./FHEM/98_HTTPMOD.pm line 596.


Gruß

Markus
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 November 2019, 19:24:02
Hallo Markus,

danke für die Hinweise.
Ich habe eine neue Version eingecheckt, die die Fehler beheben sollte.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tommy82 am 19 November 2019, 20:27:31
Hi,
ich habe nach gestriegen Update heute den Log voll mit:
2019.11.19 00:04:23.867 1: PERL WARNING: Use of uninitialized value $regopt in substitution (s///) at ./FHEM/98_HTTPMOD.pm line 596.
2019.11.19 00:04:23.872 1: stacktrace:
2019.11.19 00:04:23.872 1:     main::__ANON__                      called by ./FHEM/98_HTTPMOD.pm (596)
2019.11.19 00:04:23.873 1:     main::HTTPMOD_PrecompileRegexAttr   called by ./FHEM/98_HTTPMOD.pm (1883)
2019.11.19 00:04:23.873 1:     main::HTTPMOD_GetRegex              called by ./FHEM/98_HTTPMOD.pm (1995)
2019.11.19 00:04:23.873 1:     main::HTTPMOD_ExtractReading        called by ./FHEM/98_HTTPMOD.pm (2930)
2019.11.19 00:04:23.874 1:     main::HTTPMOD_Read                  called by FHEM/HttpUtils.pm (634)
2019.11.19 00:04:23.874 1:     main::__ANON__                      called by fhem.pl (751)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 19 November 2019, 20:35:47
Zeig mal deine Readingsdefinitionen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Tommy82 am 19 November 2019, 20:38:36
Welche?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 19 November 2019, 20:46:59
ich denke das problem wurde heute 15:27 gemeldet und 19:24 von stefan gefixt.  ;)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 19 November 2019, 20:56:44
Zitat von: frank am 19 November 2019, 20:46:59
ich denke das problem wurde heute 15:27 gemeldet und 19:24 von stefan gefixt.  ;)
Ja, hatte vergessen ;)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 November 2019, 18:14:40
Hallo,

ich habe gerade nochmal eine neue Version eingecheckt, die das Vorcompilieren bei der preProcessRegex wieder entfernt.
Bei s// ist das wohl nochmal anders zu handhaben, das muss ich mir erst in Ruhe ansehen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Rudibarani am 20 November 2019, 19:52:52
Hallo Stefan,

vielen Dank für Deine Antwort im anderen Thread. Ich nutze die die Funktion preProcessRegex um damit ein "Tab" aus dem JSON-File rauszunehmen, das der Hersteller Lupus Electronics im Status-File einbaut. Das "\t" wird von Python automatisch in ein "richtiges" Tab umgewandelt, bevor der JSON-Processor das überhaupt zu sehen bekommt und führt mit extractAllJSON daher zu einer Fehlermeldung.

Als Regel für preProcessRegex nutze ich: s/\t//g

Ich habe Dir mal ein Status-File als Demo angehängt. Das "\t" ist in den rssi-Werten.

Vielen Dank
Phillip
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: All-Ex am 27 November 2019, 20:34:17
Hallo zusammen,

nach einiger Zeit habe ich heute ein Update von FHEM gemacht und Probleme bei HTTPMOD festgestellt:

error in regex matching with regex option: Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE ?^s:prognosis">(.*?>.*?)</ at (eval 7965) line 1.

error in regex matching with regex option: Unmatched ( in regex; marked by <-- HERE in m/( <-- HERE ?^s:headers="hafasSQTrain">(?:\s?<.*?>\s?){5}(?:Bus\s|Tram\s)(.*?)</ at (eval 7966) line 1.

Die entsprechenden RegExs sehen so aus (Fehler bei reading02 und reading03. Dagegen sind reading 01 und reading04 fehlerfrei):
attr dep get01URL https://www.rmv.de/auskunft/bin/jp/stboard.exe/dn?input=friedberger+platz&boardType=dep&maxJourneys=20&start=Suchen
attr dep reading01Name time
attr dep reading01RegOpt gs
attr dep reading01Regex headers="hafasSQTime">.*?(\d\d:\d\d)
attr dep reading02Name prognosis
attr dep reading02RegOpt gs
attr dep reading02Regex prognosis">(.*?>.*?)<\/span
attr dep reading03Name train
attr dep reading03RegOpt gs
attr dep reading03Regex headers="hafasSQTrain">(?:\s?<.*?>\s?){5}(?:Bus\s|Tram\s)(.*?)<\/span>
attr dep reading04Name direction
attr dep reading04RegOpt gs
attr dep reading04Regex headers="hafasSQTimetable">(?:\s?<.*?>\s?){2}\s?(?:Frankfurt \(Main\) )?(.*?)\s?<


Nach Downgrade auf 98_HTTPMOD.pm 19978 2019-08-10 12:51:48Z StefanStrobel läuft es wieder problemlos.

Hat jemand eine Idee, woran das liegen kann?

Viele Grüße,
Alex

EDIT:
Hab gerade nochmal geschaut, vermutlich an den nicht geschlossenen Anführungszeichen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 November 2019, 22:39:52
Hallo,

Offenbar hast Du einen weiteren Fall, in dem das mit den vorcompilierten Regexes zusammen mit RegOpt nicht klappt.
Ich hatte gehofft, dass der Mechanismus ein memory leak in aktuellen Perl-Versionen umschiffen kann, ohne dass dabei Konfigurationen angepasst werden müssen. So einfach ist es aber offenbar nicht.

Ich werde daher vermutlich in den nächsten Tagen eine neue Version einchecken, in der das mit dem Vorcompilieren per Attribut aktiviert werden kann, aber nicht per Default angeschaltet wird.
Wer also eine defekte Perl-Version hat, muss sich dann entscheiden, welche Variante das Problem am passendstem umgeht. Vorcompilieren, decode der Regex oder Regex-Option a.
Leider hat offenbar alles irgendwo Nebenwirkungen.

In der Zwischenzeit kannst Du entweder mit der alten Version arbeiten oder Du probierst mal aus, die Regex-Option s nicht per RegOpt anzugeben sondern mit (?s) in die Regex einzubetten (siehe Post 628).

Gruß und Sorry
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 November 2019, 19:25:20
Hallo Alex,

könntest Du bitte die angehängte neue Version mal testen?
Ich habe das mit den compilierten Regexes mit Regopts nochmal ein wenig modifiziert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: All-Ex am 29 November 2019, 20:11:41
Hallo Stefan,

vielen Dank für deine schnelle Antwort und den Fix. Haben den gerade eingespielt und sieht gut aus :-)

Alles läuft wie es soll, keine Fehlermeldungen im Log  ;D

Danke und viele Grüße,
Alex
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Ellert am 01 Dezember 2019, 17:31:02
Mit der Version vom 20.11. wurden die Regexp mit der Option s nicht ausgewertet, mit der Version aus #650 funktioniert es wieder.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Dezember 2019, 19:46:38
Vielen Dank fürs Testen!

die neue Version ist jetzt eingecheckt.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: carlos am 05 Dezember 2019, 14:35:14
Hallo,
Ich würde gerne mit HTTPMOD meinen proxmox server Informationen über das api entlocken.
Jetzt stellt sich mir die Frage wie ich sowas mit HTTPMOD umsetzen kann:

Ich zitiere hier mal ein Beispiel aus dem Proxmox wiki wie  mit curl ein LXC container erstellt wird.



Step by step example of LXC creation using the API
assumptions:

the node where we login is called APINODE
the node on which is the container will be created is called TARGETNODE
the auth cookie will be placed in the file "cookie"
the CSRF token will be placed in the file "csrftoken"
Note: for ease of use we use the jq(1) package which parses and pretty prints json data

export variables
export APINODE=pve4
export TARGETNODE=pve4
Save an authorization cookie on the hard drive

curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket\
| jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie

Save a CSRF token locally

curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket \
| jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > csrftoken

Test auth credentials
We display the target node status

curl  --insecure --cookie "$(<cookie)" https://$APINODE:8006/api2/json/nodes/$TARGETNODE/status | jq '.'
creates an lxc container (with the given parameters)
Note: we need to encode the HTTP POST body when passing non alphanumeric parameters

curl --silent --insecure  --cookie "$(<cookie)" --header "$(<csrftoken)" -X POST\
--data-urlencode net0="name=myct0,bridge=vmbr0" \
--data-urlencode ostemplate="local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz" \
--data vmid=601\
https://$APINODE:8006/api2/json/nodes/$TARGETNODE/lxc

This should return a json structure containing the task id of the creation process which looks like:

{
  "data": "UPID:pve4:00002F9D:000DC5EA:57500527:vzcreate:602:root@pam:"
}


Wäre das auch mit HTTPMOD umzusetzen?
Nicht unbedingt gleich das erstellen eines containers, es geht erst mal nur um die Anmeldung via cookie und token.

Vielleicht kann mir ein HTTPMOD Guru mal ein wenig unter die Arme greifen, ob/wie man das machen könnte.

Gruß

Carlos

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 05 Dezember 2019, 17:25:41
@Stefan

Gestern ein Update gemacht. Auch ich möchte berichten, dass, ohne bis jetzt ersichtliche Nebenwirkungen oder von mir gemachten Änderungen an der config, die Speicherproblematik gelöst scheint. Bei mir war das allerdings ein mehrwöchiger Prozess, bis der Speicher komplett vollgelaufen ist. Werde weiter beobachten. Danke dir für den Fix!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 Dezember 2019, 19:17:48
Zitat von: carlos am 05 Dezember 2019, 14:35:14
Hallo,
Ich würde gerne mit HTTPMOD meinen proxmox server Informationen über das api entlocken.
Jetzt stellt sich mir die Frage wie ich sowas mit HTTPMOD umsetzen kann:

Ich zitiere hier mal ein Beispiel aus dem Proxmox wiki wie  mit curl ein LXC container erstellt wird.



Step by step example of LXC creation using the API
assumptions:

the node where we login is called APINODE
the node on which is the container will be created is called TARGETNODE
the auth cookie will be placed in the file "cookie"
the CSRF token will be placed in the file "csrftoken"
Note: for ease of use we use the jq(1) package which parses and pretty prints json data

export variables
export APINODE=pve4
export TARGETNODE=pve4
Save an authorization cookie on the hard drive

curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket\
| jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie

Save a CSRF token locally

curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket \
| jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > csrftoken

Test auth credentials
We display the target node status

curl  --insecure --cookie "$(<cookie)" https://$APINODE:8006/api2/json/nodes/$TARGETNODE/status | jq '.'
creates an lxc container (with the given parameters)
Note: we need to encode the HTTP POST body when passing non alphanumeric parameters

curl --silent --insecure  --cookie "$(<cookie)" --header "$(<csrftoken)" -X POST\
--data-urlencode net0="name=myct0,bridge=vmbr0" \
--data-urlencode ostemplate="local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz" \
--data vmid=601\
https://$APINODE:8006/api2/json/nodes/$TARGETNODE/lxc

This should return a json structure containing the task id of the creation process which looks like:

{
  "data": "UPID:pve4:00002F9D:000DC5EA:57500527:vzcreate:602:root@pam:"
}


Wäre das auch mit HTTPMOD umzusetzen?
Nicht unbedingt gleich das erstellen eines containers, es geht erst mal nur um die Anmeldung via cookie und token.

Vielleicht kann mir ein HTTPMOD Guru mal ein wenig unter die Arme greifen, ob/wie man das machen könnte.

Gruß

Carlos

Ja, meiner Meinung nach, könnte gehen. Die erste curls als sid Attribute, und das letzte als Hauptanfrage, dann requestXXJSON um die Antwort zu parsen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: carlos am 05 Dezember 2019, 19:45:21
Also ich habe mal so angefangen:

defmod myProxmox HTTPMOD https://192.168.178.3:8006/api2/json/access/ticket 300
attr myProxmox userattr sid1Data sid1Header01 sid1IdJSON sid1IgnoreRedirects:0,1 sid1URL
attr myProxmox alias myProxmox
attr myProxmox enableControlSet 1
attr myProxmox enableCookies 1
attr myProxmox enforceGoodReadingNames 1
attr myProxmox extractAllJSON 1
attr myProxmox room 01_Proxmox
attr myProxmox showBody 1
attr myProxmox showError 1
attr myProxmox showMatched 1
attr myProxmox sid1Data username=root@pam&password=xxxxxxx
attr myProxmox sid1Header01 Content-Type: application/json
attr myProxmox sid1IdJSON token
attr myProxmox sid1IgnoreRedirects 1
attr myProxmox sid1URL https://192.168.178.3:8006/api2/json/access/ticket
attr myProxmox timeout 60
attr myProxmox verbose 5

setstate myProxmox 2019-12-05 19:39:10 LAST_REQUEST update
setstate myProxmox 2019-12-05 19:39:10 MATCHED_READINGS
setstate myProxmox 2019-12-05 19:39:10 UNMATCHED_READINGS




Leider kommt folgende Antwort:
{"data":null}

Da scheint mir user/password noch falsch anzukommen.

Gruß

Carlos
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 Dezember 2019, 20:00:52
Es fehlt mindestens ein attr reAuthRegex, um ein Authentifizierungsprozess zu starten.
Aber ohne eine Log mit verbose 5, wird es schwierig, weiter zu helfen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: carlos am 05 Dezember 2019, 20:05:30
Kann ich lefern:


2019.12.05 20:02:05 3: myProxmox: Defined with URL https://192.168.178.3:8006/api2/json and interval 300 featurelevel 5.9
2019.12.05 20:02:05 5: myProxmox: update timer modified: will call GetUpdate in 2.0 seconds at 2019-12-05 20:02:07
2019.12.05 20:02:05 5: myProxmox: UpdateHintList called
2019.12.05 20:02:05 5: myProxmox: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2019.12.05 20:02:05 5: myProxmox: UpdateHintList: getlist =
2019.12.05 20:02:07 5: myProxmox: GetUpdate called (update)
2019.12.05 20:02:07 5: myProxmox: update timer modified: will call GetUpdate in 300.0 seconds at 2019-12-05 20:07:07
2019.12.05 20:02:07 5: myProxmox: AddToQueue adds type update to URL https://192.168.178.3:8006/api2/json, no data, no headers, retry 0, initial queue len: 0
2019.12.05 20:02:07 5: myProxmox: HandleSendQueue called, qlen = 1
2019.12.05 20:02:07 4: myProxmox: HandleSendQueue sends update with timeout 60 to https://192.168.178.3:8006/api2/json, No Data, No Header
2019.12.05 20:02:07 5: HttpUtils url=https://192.168.178.3:8006/api2/json
2019.12.05 20:02:07 4: IP: 192.168.178.3 -> 192.168.178.3
2019.12.05 20:02:07 5: HttpUtils request header:
GET /api2/json HTTP/1.0
Host: 192.168.178.3:8006
User-Agent: fhem
Accept-Encoding: gzip,deflate
2019.12.05 20:02:11 4: https://192.168.178.3:8006/api2/json: HTTP response code 401
2019.12.05 20:02:11 5: HttpUtils https://192.168.178.3:8006/api2/json: Got data, length: 0
2019.12.05 20:02:11 5: HttpUtils response header:
HTTP/1.0 401 No ticket
Cache-Control: max-age=0
Connection: close
Date: Thu, 05 Dec 2019 19:02:08 GMT
Pragma: no-cache
Server: pve-api-daemon/3.0
Expires: Thu, 05 Dec 2019 19:02:08 GMT
2019.12.05 20:02:11 4: myProxmox: Read callback: request type was update retry 0,
header: HTTP/1.0 401 No ticket
Cache-Control: max-age=0
Connection: close
Date: Thu, 05 Dec 2019 19:02:08 GMT
Pragma: no-cache
Server: pve-api-daemon/3.0
Expires: Thu, 05 Dec 2019 19:02:08 GMT, no body
2019.12.05 20:02:11 5: myProxmox: Read callback: body empty
2019.12.05 20:02:11 5: myProxmox: GetCookies is looking for Cookies
2019.12.05 20:02:11 5: myProxmox: ExtractSid called, context reading, num
2019.12.05 20:02:11 5: myProxmox: CheckAuth decided no authentication required
2019.12.05 20:02:11 3: myProxmox: no parsed JSON structure available
2019.12.05 20:02:11 5: myProxmox: UpdateReadingList created list of reading.* nums to parse during getUpdate as
2019.12.05 20:02:11 5: myProxmox: Read starts parsing response to update with defined readings:
2019.12.05 20:02:11 4: myProxmox: Read response to update didn't match any Reading
2019.12.05 20:02:11 5: myProxmox: HandleSendQueue called, qlen = 0
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 06 Dezember 2019, 23:31:21
Wie gesagt, zuerst reAuthRegex setzen. Zum Beispiel auf
401.No.ticketdamit er überhaupt eine Chance hat, sid1xxxx zu benutzen.

sid1IdJSON  muss wahrscheinlich eher ticket oder data_ticket statt token sein.
Dann sehen wir mal in der Log, was kommt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: carlos am 06 Dezember 2019, 23:53:00
Ergibt folgendes im log:
2019.12.06 23:50:20 3: myProxmox: Defined with URL https://192.168.178.3:8006/api2/json/access/ticket and interval 300 featurelevel 5.9
2019.12.06 23:50:20 5: myProxmox: update timer modified: will call GetUpdate in 2.0 seconds at 2019-12-06 23:50:22
2019.12.06 23:50:20 5: myProxmox: UpdateHintList called
2019.12.06 23:50:20 5: myProxmox: UpdateHintList: setlist = interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
2019.12.06 23:50:20 5: myProxmox: UpdateHintList: getlist =
2019.12.06 23:50:23 5: myProxmox: GetUpdate called (update)
2019.12.06 23:50:23 5: myProxmox: update timer modified: will call GetUpdate in 300.0 seconds at 2019-12-06 23:55:23
2019.12.06 23:50:23 5: myProxmox: AddToQueue adds type update to URL https://192.168.178.3:8006/api2/json/access/ticket, no data, no headers, retry 0, initial queue len: 0
2019.12.06 23:50:23 5: myProxmox: HandleSendQueue called, qlen = 1
2019.12.06 23:50:23 4: myProxmox: HandleSendQueue sends update with timeout 60 to https://192.168.178.3:8006/api2/json/access/ticket, No Data, No Header
2019.12.06 23:50:23 5: HttpUtils url=https://192.168.178.3:8006/api2/json/access/ticket
2019.12.06 23:50:23 4: IP: 192.168.178.3 -> 192.168.178.3
2019.12.06 23:50:23 5: HttpUtils request header:
GET /api2/json/access/ticket HTTP/1.0
Host: 192.168.178.3:8006
User-Agent: fhem
Accept-Encoding: gzip,deflate

2019.12.06 23:50:24 4: https://192.168.178.3:8006/api2/json/access/ticket: HTTP response code 200
2019.12.06 23:50:24 5: HttpUtils https://192.168.178.3:8006/api2/json/access/ticket: Got data, length: 13
2019.12.06 23:50:24 5: HttpUtils response header:
HTTP/1.0 200 OK
Cache-Control: max-age=0
Connection: close
Date: Fri, 06 Dec 2019 22:50:23 GMT
Pragma: no-cache
Server: pve-api-daemon/3.0
Content-Length: 13
Content-Type: application/json;charset=UTF-8
Expires: Fri, 06 Dec 2019 22:50:23 GMT
2019.12.06 23:50:24 4: myProxmox: Read callback: request type was update retry 0,
header: HTTP/1.0 200 OK
Cache-Control: max-age=0
Connection: close
Date: Fri, 06 Dec 2019 22:50:23 GMT
Pragma: no-cache
Server: pve-api-daemon/3.0
Content-Length: 13
Content-Type: application/json;charset=UTF-8
Expires: Fri, 06 Dec 2019 22:50:23 GMT, body length 13
2019.12.06 23:50:24 5: myProxmox: Read callback: body
{"data":null}
2019.12.06 23:50:24 5: myProxmox: JSON Flatter called : prefix , ref is HASH(0x55d580d6d098)
2019.12.06 23:50:24 4: myProxmox: extracted JSON values to internal
2019.12.06 23:50:24 5: myProxmox: GetCookies is looking for Cookies
2019.12.06 23:50:24 5: myProxmox: ExtractSid called, context reading, num
2019.12.06 23:50:24 5: myProxmox: GetRegex found precompiled reAuthRegex for  as (?^:401.No.ticket)
2019.12.06 23:50:24 5: myProxmox: CheckAuth is checking buffer with ReAuthRegex (?^:401.No.ticket)
2019.12.06 23:50:24 5: myProxmox: CheckAuth decided no authentication required
2019.12.06 23:50:24 3: myProxmox: no parsed JSON structure available
2019.12.06 23:50:24 5: myProxmox: UpdateReadingList created list of reading.* nums to parse during getUpdate as
2019.12.06 23:50:24 5: myProxmox: Read starts parsing response to update with defined readings:
2019.12.06 23:50:24 4: myProxmox: Read response to update didn't match any Reading
2019.12.06 23:50:24 5: myProxmox: HandleSendQueue called, qlen = 0
2019.12.06 23:50:24 3: myKVPUDP: Received 57 bytes from '192.168.178.80'


Ich hänge mal das log vom curl Aufruf mit an, vieleicht hilft das:
root@fhem2:/opt/fhem/FHEM# curl -v -k -d "username=root@pam&password=XXX"  https://192.168.178.3:8006/api2/json/access/ticket
* Expire in 0 ms for 6 (transfer 0x557eacafbdf0)
*   Trying 192.168.178.3...
* TCP_NODELAY set
* Expire in 200 ms for 4 (transfer 0x557eacafbdf0)
* Connected to 192.168.178.3 (192.168.178.3) port 8006 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: none
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
* TLSv1.3 (IN), TLS handshake, Certificate (11):
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
* TLSv1.3 (IN), TLS handshake, Finished (20):
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.3 (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: OU=PVE Cluster Node; O=Proxmox Virtual Environment; CN=proxmox.fritz.box
*  start date: Sep  3 08:33:47 2019 GMT
*  expire date: Aug 31 08:33:47 2029 GMT
*  issuer: CN=Proxmox Virtual Environment; OU=edd1a80b-c5f6-4401-b4ea-53140bedf703; O=PVE Cluster Manager CA
*  SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.
> POST /api2/json/access/ticket HTTP/1.1
> Host: 192.168.178.3:8006
> User-Agent: curl/7.64.0
> Accept: */*
> Content-Length: 36
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 36 out of 36 bytes
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
* old SSL session ID is stale, removing
< HTTP/1.1 200 OK
< Cache-Control: max-age=0
< Connection: close
< Connection: Keep-Alive
< Date: Fri, 06 Dec 2019 22:53:56 GMT
< Pragma: no-cache
< Server: pve-api-daemon/3.0
< Content-Length: 1167
< Content-Type: application/json;charset=UTF-8
< Expires: Fri, 06 Dec 2019 22:53:56 GMT
<
{"data":{"cap":{"dc":{"Sys.Audit":1},"storage":{"Datastore.AllocateSpace":1,"Datastore.AllocateTemplate":1,"Datastore.Audit":1,"Permissions.Modify":1,"Datastore.Allocate":1},"vms":{"VM.Snapshot":1,"VM.Backup":1,"VM.Config.Options":1,"VM.Snapshot.Rollback":1,"VM.Audit":1,"VM.Config.Disk":1,"VM.Migrate":1,"VM.Console":1,"VM.Config.CDROM":1,"VM.Config.Memory":1,"VM.PowerMgmt":1,"VM.Config.CPU":1,"VM.Monitor":1,"VM.Clone":1,"VM.Config.HWType":1,"VM.Allocate":1,"VM.Config.Network":1,"Permissions.Modify":1},"access":{"Group.Allocate":1,"Permissions.Modify":1,"User.Modify":1},"nodes":{"Sys.Audit":1,"Permissions.Modify":1,"Sys.Syslog":1,"Sys.Modify":1,"Sys.PowerMgmt":1,"Sys.Console":1}},"ticket":"PVE:root@pam:5DEADC04::hTdB/7hf226qXLMbkfZPzy0K38evFP4uMN3/EMzVpozftL/tWiDULj8fcotXu6KUdmcAZRsb1YuFn+RZKLZGH2zYy1KsvnpEOpXNtbPVfMnfMk/UkKj4W/0mweju3IBh1axpH4DJ9uO6Gbhf1d+gmt6x0yYZjvZqYZrpzhp5WDL5kcMhTtCVuEtj4LmkZoBYBFLs7jxqj+YumUsw58cv9THwzZoinStvGO3Oczz0PqJsq9SKugKuorHiYwlzJCxMH7dZIEqqyA1OUeIhvPnoR8TAuopCANJZPNrswBM7PI3QdaE* Closing connection 0
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 07 Dezember 2019, 00:39:56
also... HTTPMOD funktioniert so:

- in der DEF ruft man die URL auf, wo die gezielte Daten sind (was man tatsächlich lesen will)
- beim ersten Aufruf, wenn eine Fehlermeldung wegen Authentifizierung kommt, wird diese Meldung von reAuthRegex gefangen, um ggf. einen Authentifizierungsprozess zu starten
- die sid..... Attribute werden für die Authentifizierung benutzt, und ggf die Sitzung-ID oder tokens oder was auch immer geholt
- damit wird die Hauptseite wieder gerufen, und diesmal liefert sie die Daten

Daher:
curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket\
| jq --raw-output '.data.ticket' | sed 's/^/PVEAuthCookie=/' > cookie
wird als sid01..... Attribute implementiert, und damit wird AuthCookie geholt

curl --silent --insecure --data "username=root@pam&password=yourpassword" \
https://$APINODE:8006/api2/json/access/ticket \
| jq --raw-output '.data.CSRFPreventionToken' | sed 's/^/CSRFPreventionToken:/' > csrftoken
wird als sid02...... Attribute  implementiert, und damit wird den CSRFToken geholt

curl --silent --insecure  --cookie "$(<cookie)" --header "$(<csrftoken)" -X POST\
--data-urlencode net0="name=myct0,bridge=vmbr0" \
--data-urlencode ostemplate="local:vztmpl/debian-8.0-standard_8.0-1_amd64.tar.gz" \
--data vmid=601\
https://$APINODE:8006/api2/json/nodes/$TARGETNODE/lxc
Das ist die Hauptanfrage. Stimmen übrigens die Parameter in urlencode mit deinem Fall?

Das kann sein, dass enableCookies reicht, um die AuthCookie und gleichzeitig den CSRFToken automatisch zu holen.
Dann würden ein sid01URL und ein sid01Data schon reichen

Besser als die curl Beispiele wäre eine Analyse mit Burp oder evtl. mit F12 im Browser, wenn Du die Daten holst, inkl Anmeldung

Ich würde einfach so anfangen:
defmod myProxmox HTTPMOD https://192.168.178.3:8006/api2/json/nodes/pve4/lxc?net0%3D%22name%3Dmyct0%2Cbridge%3Dvmbr0%22%0A&ostemplate%3D%22local%3Avztmpl%2Fdebian-8.0-standard_8.0-1_amd64.tar.gz%22%0A 0(wenn pve4 tatsächlich dein TARGETNODE ist, und wenn alle Parameter des curl Beispiels bei dir passen)
(Update Interval auf 0 gesetzt, damit man gezielt mit einem set reread triggern kann)
attr myProxmox enableControlSet 1
attr myProxmox enableCookies 1
attr myProxmox requestData vmid=601
attr myProxmox reAuthRegex 401.No.ticket
attr myProxmox sid01Data username=root@pam&password=XXX
attr myProxmox sid01URL https://192.168.178.3:8006/api2/json/access/ticket

Und dann sehen und nach und nach erweitern





Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: babajun am 08 Dezember 2019, 16:45:21
Hallo,

hatte die letzten Tage, nach dem update auf 3.5.19 - 29.11.2019, probleme mit auslesen der Temperatur am BSB Adapter.
Genau gesagt, die Aussentemperatur, bei mir die erste regex Abfrage, wurde nicht durchgeführt.

Habe schnell Version 3.5.9 - 13.2.2019 aus einem backup zurückgespielt. Die Abfrage funktioniert nun wieder.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 Dezember 2019, 22:32:58
Hallo babajun,

Poste doch mal Deine Konfiguration und einen Auszug aus dem Log der neuen Version mit verbose 5, dann kann ich das Problem vermutlich nachvollziehen und lösen.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 22 Dezember 2019, 18:32:05
@StefanStrobel

Hallo Stefan, das hat jetzt nichts mit der durch die Speicherproblematik neuen Version zu tun, sondern ist wohl schon immer so. Jetzt komme ich dazu, mich zu kümmern.

Mein fhem ist ab und zu recht unresponsiv. Besonders wenn mein Internet down ist.

Heute mit freezemon ein wenig experimentiert und HttpMod und Modbus (läuft intern, Internetunabhängig) sind 2 Verdächtige.

Auszug log:

2019.12.22 18:39:49 2: [Freezemon] freezemon: ready to watch out for delays greater than 1 second(s)
2019.12.22 18:49:13 1: [Freezemon] freezemon: possible freeze starting at 18:49:10, delay is 3.554 possibly caused by: tmr-HTTPMOD_HandleSendQueue(XtenderReadout)
2019.12.22 18:49:30 1: [Freezemon] freezemon: possible freeze starting at 18:49:29, delay is 1.046 possibly caused by: tmr-HTTPMOD_HandleSendQueue(XtenderReadout) tmr-HMLAN_KeepAliveCheck(HM_LAN_FUNK)
2019.12.22 18:49:40 1: [Freezemon] freezemon: possible freeze starting at 18:49:39, delay is 1.481 possibly caused by: tmr-HTTPMOD_HandleSendQueue(XtenderReadout) tmr-CODE(0x207f810)(dnsQuery)
2019.12.22 18:49:59 1: [Freezemon] freezemon: possible freeze starting at 18:49:58, delay is 1.318 possibly caused by: tmr-HTTPMOD_GetUpdate(XtenderReadout)
2019.12.22 18:50:09 1: [Freezemon] freezemon: possible freeze starting at 18:50:08, delay is 1.089 possibly caused by: tmr-HTTPMOD_GetUpdate(XtenderReadout)
2019.12.22 18:52:49 1: [Freezemon] freezemon: possible freeze starting at 18:52:48, delay is 1.016 possibly caused by: tmr-HTTPMOD_GetUpdate(XtenderReadout) 


Wie man Verzögerungen über zB dev-timing-commDelay, dev-timing-sendDelay im Falle Modbus oder queueDelay im Falle httpmod einsetzt, hattest du mir schon öfter erklärt. Aber irgendwie führt das zu keinem Erfolg.... egal welche Werte ich nutze.

Meine Frage ist eher eine Grundegende. Wie schaffe ich es Modbus und HttpMod non-blocking auszuführen? Oder anders gefragt, wie kann ich modbus und httpmod nutzen, ohne dass "Internet down", oder andere mir nicht bekannte Umstände, zu einem, in meinem Fall, unresponsiven fhem führen?

Das ist alles kein Drama, wenn ab und zu ein Schalter für 2-3 Sekunden nicht reagiert, mich würde aber eine evtl vorhandene Lösungsmöglichkeit interessieren.

Danke und Grüße
H.

EDIT: update log Auszug

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 22 Dezember 2019, 19:35:48
Hallo,

eine Frage, gibt es eine Möglichkeit HTTPMOD dazu zu bewegen, eine selbst erzeugte Liste von Daten durch zB get04Regex oder get05JSON als Auswahl Parameter wieder im Set-Befehl zu haben?!

Bsp:
Ich bekomme aus einem JSON eine Liste von Daten aus meiner Jalousiesteuerung:
get05JSON   sceneValues

get05Name    globaleSzenen

get05Pol   1

get05RecombineExpr   join " ", @matchlist

get05URL   http://IP/ocf/sceneCollection/0


OutPut durch Leerzeichen getrennte Liste:
globaleSzenen   Home Away Sleep

Da ich den gleiche setName Parameter habe, der auch globaleSzenen heißt, enthält er in einem String die Werte "Home Away Sleep".
Ich würde aber diesen set-Wert gern als Auswahl einem der Werte schicken.
Ich habe schon die Liste mit  join ",", @matchlist durch ein Komma erweiter, aber dann ist und bleibt es ein String.
Bei setList, wäre es genau jeweils ein Parameter zur Auswahl.

So also die Frage, jetzt geht das in HTTPMod oder oder kennt einer einen Weg, einem setList, dieses Reading "Home Away Sleep" oder zB "Home,Away,Sleep" als mehre Auswahlparameter zu übergeben?

VG
René
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 22 Dezember 2019, 20:53:26
Das sollte mit replacement[0-9]*Mode reading möglich sein, oder?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 23 Dezember 2019, 10:26:48
Zitat von: amenomade am 22 Dezember 2019, 20:53:26
Das sollte mit replacement[0-9]*Mode reading möglich sein, oder?

Hi amenomade,

kannst du mir ein Bsp geben? Ich versteh das grad nicht...
Hier die Antwort vom Server:
{
    "sceneValues": [
        "Home",
        "Away",
        "Sleep"
    ],
    "n": "Basic Moments",
    "lastScene": "Sleep"
}


Wie wäre jetzt das replacement zu setzen, damit in "get05Name    globaleSzenen" am Ende diese Auswahl ist. Oder in einem anderen Reading, welches ich dann als setlist bzw. setXXName setzen kann?

Aktuell steht alles in einem
globaleSzenen   Home Away Sleep
VG
REné
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Dezember 2019, 12:33:50
Hallo holle75,

Das Abfragen von Webseiten macht HTTPMOD schon immer asynchron ohne zu blockieren.
Eventuell hängt es aber an den DNS-Abfragen.
Das kannst Du über das globale Attribut dnsServer steuern (siehe https://forum.fhem.de/index.php/topic,53309.msg449992.html#msg449992)

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: peterk_de am 23 Dezember 2019, 15:42:23
Hallo zusammen,

ist es möglich, automatisch einen reread nach jedem set zu aktivieren? Hab ich nicht gefunden. Habe ein Device, bei dem selten was von sich aus passiert (--> langes Update Intervall von mehreren Minuten genügt), aber wenn man es per set z.B. anschaltet, wäre es nett, wenn man das sofort auch in den Readings sehen würde.

Mache jetzt direkt nach jedem set "manuell" ein reread, aber vielleicht geht das ja eleganter!?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 23 Dezember 2019, 18:18:59
Zitat von: fireball am 23 Dezember 2019, 10:26:48
Hi amenomade,

kannst du mir ein Bsp geben? Ich versteh das grad nicht...
Hier die Antwort vom Server:
{
    "sceneValues": [
        "Home",
        "Away",
        "Sleep"
    ],
    "n": "Basic Moments",
    "lastScene": "Sleep"
}


Wie wäre jetzt das replacement zu setzen, damit in "get05Name    globaleSzenen" am Ende diese Auswahl ist. Oder in einem anderen Reading, welches ich dann als setlist bzw. setXXName setzen kann?

Aktuell steht alles in einem
globaleSzenen   Home Away Sleep
VG
REné
Sorry, ich hatte die Frage falsch gelesen. Ich dachte, Du möchtest in einem set einen einzelnen Wert von einem get wieder benutzen.
Was Du suchst ist setXXHint, aber ich weiss nicht, ob man dort Perl einsetzen kann, damit es dynamisch wird. Eine vordefinierte Liste würde aber gehen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Dezember 2019, 21:08:52
Hallo fireball,

ich würde einfach bei Bedarf die entsprechenden Attribute setzen. Geht ja auch aus einer Perl-Expression heraus.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Dezember 2019, 21:40:47
Hallo peterk_de,

ein reread oder get nach einem set steht schon lange auf meiner Wunschliste.
Bisher ist das aber nicht implementiert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 25 Dezember 2019, 15:30:46
Zitat von: StefanStrobel am 23 Dezember 2019, 21:08:52
Hallo fireball,

ich würde einfach bei Bedarf die entsprechenden Attribute setzen. Geht ja auch aus einer Perl-Expression heraus.

Gruss
   Stefan

Hi Stefan, funktioniert in den Attributen (readingsVal)?
Vg Rene
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 25 Dezember 2019, 20:00:46
Wenn Perl-Expression funktioniert, dann ReadingsVal auch
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Dezember 2019, 21:38:35
Hallo,

im Attribut set01Hint kann man keine Expressions eingeben. Die Idee ist anders herum, dass man auf ein neues Reading reagiert (z.B. aus einem Notify heraus oder über HTTPMOD-Attribute, die Expressions enthalten wie z.B. reading01OExpr) und in der Expression dann das statische Attribut set01Hint o.ä. ändert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 25 Dezember 2019, 21:43:30
Die Änderung eines Attr würde aber ein rotes Fragezeichen jedes Mal oben links bringen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Dezember 2019, 21:54:29
Das stimmt natürlich.

Die Set-Funktion speichert die Liste der möglichen Werte bzw. Hints in $hash->{".setList"}.
Die wird aber sofort neu aus den Attributen generiert, wenn ein passendes Attribut geändert wird.
Dazu wird am Ende der Attr-Funktion ein Flag gesetzt:

if ($aName =~ /^[gs]et/ || $aName eq "enableControlSet") {
    $hash->{".updateHintList"} = 1;
}

Wenn man zur Laufzeit keine Attribute mehr anfasst, könnte man also auch in einer Expression $hash->{".setList"} modifizieren ...
Nur kann ich nicht garantieren, dass das bei künftigen Änderungen auch noch funktioniert.

Ebenso könnte man ein Attribut ändern, indem man direkt in die Attribut-Variablen schreibt. Auch nicht schön.

Ich nehme mal ein neues Attribut "setXYHintExpression" auf die Wunschliste, über das man eine Perl-Expression angeben kann, die dann die Hints dynamisch ergänzt ...

Gruss
   Stefan


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 26 Dezember 2019, 14:50:39
Hallo (und natürlich frohes Fest usw. usf.)!

Ich habe ein Problem mit einem per attribut definierten 'set', in dem die PUT Methode genutzt wird. Habe erst kürzlich gemerkt, dass das geht und wollte nun die Licht-An-Aus Funktion einer Miele Dunstabzughaube damit realisieren.

Das ging bei mir in der Vergangenheit über ein dummy und ein notify, mit dem letzlich eine Routine folgenden Inhalts aufgerufen wurde:
sub putDA {
  my $befehl = "curl -X PUT 'https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions' -H 'accept: */*' -H 'Content-Type: application/json' -H 'Authorization: Bearer ";
  $befehl .= InternalVal("Dunsthaube","sid", "");
  if (@_[0] eq 'on') {
    $befehl .= "' -d '{\"light\":1}' &";
   } else {
    $befehl .= "' -d '{\"light\":2}' &";
  };
  Log 3,$befehl;
  system("$befehl");
  return 0;
}

Um diesen Umweg über eine extra dummy und ein extra notify zu vermeiden, habe ich die oben erwähnte "set-mit-PUT" Methode implementiert. Hier das komplette device-Listing:
Internals:
   BUSY       0
   DEF        https://api.mcs3.miele.com/v1/devices/000xxxxxxxx?language=de 120
   FUUID      5da421bf-f33f-a50b-de06-0b67e3955dbde971
   Interval   120
   JSONEnabled 1
   LASTSEND   1577365895.5201
   LastAuthTry 2019-12-26 14:10:41
   MainURL    https://api.mcs3.miele.com/v1/devices/000xxxxxxxx?language=de
   ModuleVersion 3.5.19 - 29.11.2019
   NAME       Dunsthaube
   NOTIFYDEV  global
   NR         55
   NTFY_ORDER 50-Dunsthaube
   STATE      Aus
   TRIGGERTIME 1577365961.65862
   TRIGGERTIME_FMT 2019-12-26 14:12:41
   TYPE       HTTPMOD
   addr       https://api.mcs3.miele.com:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://api.mcs3.miele.com/v1/devices/000xxxxxxxx?language=de
   header     Authorization: Bearer DE_xxxxxxxxxxxxxxxxxxxxxe8de0b
Content-Type: application/json
   host       api.mcs3.miele.com
   httpheader HTTP/1.1 200 OK
Date: Thu, 26 Dec 2019 13:11:35 GMT
Content-Type: application/json
Content-Length: 554
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Content-Encoding: gzip
Strict-Transport-Security: max-age=15724800; includeSubDomains
Vary: Accept-Encoding
   httpversion 1.0
   hu_blocking 0
   hu_filecount 7
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /v1/devices/000xxxxxxxx?language=de
   protocol   https
   redirects  0
   sid        DE_xxxxxxxxxxxxxxxxxxxxxe8de0b
   timeout    2
   url        https://api.mcs3.miele.com/v1/devices/000xxxxxxxx?language=de
   value      0
   CompiledRegexes:
   QUEUE:
   READINGS:
     2019-12-26 14:11:35   Licht           2
   REQUEST:
     data       
     header     Authorization: Bearer $sid
Content-Type: application/json
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://api.mcs3.miele.com/v1/devices/000xxxxxxxx?language=de
     value      0
   defptr:
     readingBase:
       Licht      reading
     readingNum:
       Licht      01
     readingOutdated:
     requestReadings:
       update:
         Licht      reading 01
   sslargs:
Attributes:
   disable    0
   enableControlSet 1
   event-on-change-reading .*
   reAuthRegex 500.Internal.Server.Error|Unauthorized|default.backend...401
   reading01JSON state_light
   reading01Name Licht
   requestHeader01 Authorization: Bearer $sid
   requestHeader02 Content-Type: application/json
   room       Haus
   set01Data  {"light":$val}
   set01Header1 accept: */*
   set01Header2 Authorization: Bearer $sid
   set01Header3 Content-Type: application/json
   set01IMap  1:on,2:off
   set01Method PUT
   set01Name  Licht_
   set01URL   https://api.mcs3.miele.com/v1/devices/000xxxxxxxx/actions
   sid1URL    https://api.mcs3.miele.com/thirdparty/login/?response_type=code&state=login&client_id=xxxxxxxxxxxxxxxxxxxx&scope=&redirect_uri=https%3A%2F%2Fapi.mcs3.miele.com%2Fthirdparty%2Flogin%2F
   sid2Data   email=a.b@gmx.de&password=strenggeheim&redirect_uri=https%3A%2F%2Fapi.mcs3.miele.com%2Fthirdparty%2Flogin%2F&state=login&response_type=code&client_id=xxxxxxxxxxxxxxxxxxxx&vgInformationSelector=de-DE
   sid2IdRegex (?s)code=(DE_[0-9a-f]+)
   sid2IgnoreRedirects 1
   sid2URL    https://api.mcs3.miele.com/oauth/auth
   sid3Data   grant_type=authorization_code&code=$sid&redirect_uri=https%3A%2F%2Fapi.mcs3.miele.com%2Fthirdparty%2Flogin%2F&client_id=xxxxxxxxxxxxxxxxxxxx&client_secret=xxxxxxxxxxxxxxxxxxxx
   sid3IdJSON access_token
   sid3URL    https://api.mcs3.miele.com/thirdparty/token/
   stateFormat {ReadingsVal($name,"Licht",0)==1 ? "An" : "Aus"}
   userattr   reading01JSON reading01Name requestHeader01 requestHeader02 set01Data set01Header1 set01Header2 set01Hint set01IMap set01Max set01Method:GET,POST,PUT set01Min set01Name set01URL setHeader1 sid1URL sid2Data sid2IdRegex sid2IgnoreRedirects:0,1 sid2URL sid3Data sid3IdJSON sid3URL
   verbose    3


Das funktioniert zwar...,
...aber danach sind keine 'reread' mehr möglich! An- und Ausschalten kann ich die Dunsthaube weiterhin mit 'set Dunsthaube Licht_ on/off", nur reread geht nicht mehr. Ein 'shutdown restart' bringt zwar alles wieder in Ordnung, aber nur bis 'set Dunsthaube' erneut aufgerufen wird. (Beim Schalten per dummy über den Aufruf von putDA() gbt es das Problem nicht).

Folgende Log-Auszüge haben mir leider auch nicht weiter geholfen:

Logauszug nach funktionierendem 'reread'
2019.12.26 13:00:05 5: Dunsthaube: set called with reread
2019.12.26 13:00:05 5: Dunsthaube: GetUpdate called (reread)
2019.12.26 13:00:05 5: Dunsthaube: AddToQueue adds type update to URL https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de, no data, header Authorization: Bearer $sid
Content-Type: application/json, retry 0, initial queue len: 0
2019.12.26 13:00:05 5: Dunsthaube: HandleSendQueue called, qlen = 1
2019.12.26 13:00:05 4: Dunsthaube: HandleSendQueue sends update with timeout 2 to https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de, No Data,
header: Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json
2019.12.26 13:00:05 5: HttpUtils url=https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de
2019.12.26 13:00:05 4: IP: api.mcs3.miele.com -> 52.232.28.91
2019.12.26 13:00:05 5: HttpUtils request header:
GET /v1/devices/000xxxxxxxxx?language=de HTTP/1.0
Host: api.mcs3.miele.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json

2019.12.26 13:00:05 4: https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de: HTTP response code 200
2019.12.26 13:00:05 5: HttpUtils https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de: Got data, length: 1419
2019.12.26 13:00:05 5: HttpUtils response header:
HTTP/1.1 200 OK
Date: Thu, 26 Dec 2019 12:00:05 GMT
Content-Type: application/json
Content-Length: 558
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Content-Encoding: gzip
Strict-Transport-Security: max-age=15724800; includeSubDomains
Vary: Accept-Encoding
2019.12.26 13:00:05 4: Dunsthaube: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Date: Thu, 26 Dec 2019 12:00:05 GMT
Content-Type: application/json
Content-Length: 558
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Content-Encoding: gzip
Strict-Transport-Security: max-age=15724800; includeSubDomains
Vary: Accept-Encoding, body length 1419
2019.12.26 13:00:05 5: Dunsthaube: Read callback: body
{"ident":{"type":{"key_localized":"Gerätetyp","value_raw":18,"value_localized":"Dunstabzugshaube"},"deviceName":"","deviceIdentLabel":{"fabNumber":"000xxxxxxxxx","fabIndex":"00","techType":"DA 6708 D","matNumber":"10755620","swids":[]},"xkmIdentLabel":{"techType":"EK039W","releaseVersion":"02.65"}},"state":{"ProgramID":{"value_raw":0,"value_localized":"","key_localized":"Programmbezeichnung"},"status":{"value_raw":5,"value_localized":"In Betrieb","key_localized":"Status"},"programType":{"value_raw":0,"value_localized":"Programm","key_localized":"Programmart"},"programPhase":{"value_raw":4608,"value_localized":"","key_localized":"Programmphase"},"remainingTime":[0,0],"startTime":[0,0],"targetTemperature":[{"value_raw":-32768,"value_localized":null,"unit":"Celsius"}],"temperature":[{"value_raw":-32768,"value_localized":null,"unit":"Celsius"},{"value_raw":-32768,"value_localized":null,"unit":"Celsius"},{"value_raw":-32768,"value_localized":null,"unit":"Celsius"}],"signalInfo":false,"signalFailure":false,"signalDoor":false,"remoteEnable":{"fullRemoteControl":false,"smartGrid":false},"light":2,"elapsedTime":[],"spinningSpeed":{"unit":"U/min","value_raw":null,"value_localized":null,"key_localized":"Schleuderdrehzahl"},"dryingStep":{"value_raw":null,"value_localized":"","key_localized":"Trockenstufe"},"ventilationStep":{"value_raw":0,"value_localized":"","key_localized":"Lüfterstufe"},"plateStep":[]}}
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix , ref is HASH(0x58d6bf0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_, ref is HASH(0x5aa2648)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_dryingStep_, ref is HASH(0x5b1d010)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_dryingStep_key_localized to Trockenstufe
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_dryingStep_value_localized to
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_ventilationStep_, ref is HASH(0x5b284e0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ventilationStep_key_localized to L�fterstufe
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ventilationStep_value_localized to
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ventilationStep_value_raw to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_signalFailure to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_remainingTime_, ref is ARRAY(0x5b2ee98)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_remainingTime_0 to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_remainingTime_1 to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_elapsedTime_, ref is ARRAY(0x5a9c6d0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_status_, ref is HASH(0x5a65ef8)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_status_key_localized to Status
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_status_value_localized to In Betrieb
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_status_value_raw to 5
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_spinningSpeed_, ref is HASH(0x5b2ecd0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_spinningSpeed_key_localized to Schleuderdrehzahl
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_spinningSpeed_unit to U/min
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_signalInfo to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_startTime_, ref is ARRAY(0x5b1caa0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_startTime_0 to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_startTime_1 to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_light to 2
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_programPhase_, ref is HASH(0x5b28798)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programPhase_value_raw to 4608
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programPhase_key_localized to Programmphase
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programPhase_value_localized to
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_remoteEnable_, ref is HASH(0x5ada2b8)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_remoteEnable_fullRemoteControl to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_remoteEnable_smartGrid to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_signalDoor to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_targetTemperature_, ref is ARRAY(0x5b249f0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_targetTemperature_01_, ref is HASH(0x5b1cde8)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_targetTemperature_01_unit to Celsius
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_targetTemperature_01_value_raw to -32768
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_temperature_, ref is ARRAY(0x5b241b0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_temperature_01_, ref is HASH(0x418df70)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_01_value_raw to -32768
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_01_unit to Celsius
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_temperature_02_, ref is HASH(0x5aa21c8)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_02_value_raw to -32768
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_02_unit to Celsius
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_temperature_03_, ref is HASH(0x5b28720)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_03_unit to Celsius
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_temperature_03_value_raw to -32768
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_programType_, ref is HASH(0x5aa4658)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programType_value_localized to Programm
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programType_key_localized to Programmart
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_programType_value_raw to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_plateStep_, ref is ARRAY(0x41907b0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix state_ProgramID_, ref is HASH(0x5adc1b8)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ProgramID_value_raw to 0
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ProgramID_key_localized to Programmbezeichnung
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets state_ProgramID_value_localized to
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix ident_, ref is HASH(0x5aa2c48)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix ident_type_, ref is HASH(0x5a67150)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_type_value_raw to 18
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_type_key_localized to Ger�tetyp
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_type_value_localized to Dunstabzugshaube
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix ident_deviceIdentLabel_, ref is HASH(0x5adad08)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_deviceIdentLabel_matNumber to 10755620
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_deviceIdentLabel_fabIndex to 00
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a ARRAY
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix ident_deviceIdentLabel_swids_, ref is ARRAY(0x5aa0c40)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_deviceIdentLabel_fabNumber to 000xxxxxxxxx
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_deviceIdentLabel_techType to DA 6708 D
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter doing recursion because value is a HASH
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter called : prefix ident_xkmIdentLabel_, ref is HASH(0x5a654f0)
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_xkmIdentLabel_techType to EK039W
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_xkmIdentLabel_releaseVersion to 02.65
2019.12.26 13:00:05 5: Dunsthaube: JSON Flatter sets ident_deviceName to
2019.12.26 13:00:05 4: Dunsthaube: extracted JSON values to internal
2019.12.26 13:00:05 5: Dunsthaube: ExtractSid called, context reading, num
2019.12.26 13:00:05 5: Dunsthaube: GetRegex found precompiled reAuthRegex for  as (?^:500.Internal.Server.Error|Unauthorized|default.backend...401)
2019.12.26 13:00:05 5: Dunsthaube: CheckAuth is checking buffer with ReAuthRegex (?^:500.Internal.Server.Error|Unauthorized|default.backend...401)
2019.12.26 13:00:05 5: Dunsthaube: CheckAuth decided no authentication required
2019.12.26 13:00:05 5: Dunsthaube: Read starts parsing response to update with defined readings: 01
2019.12.26 13:00:05 5: Dunsthaube: ExtractReading Licht with json state_light ...
2019.12.26 13:00:05 5: Dunsthaube: ExtractReading for reading01-1 sets Licht to 2
2019.12.26 13:00:05 4: Dunsthaube: Read response matched 1, unmatch 0 Reading(s)
2019.12.26 13:00:05 5: Dunsthaube: Read response to update matched Licht
2019.12.26 13:00:05 5: Dunsthaube: HandleSendQueue called, qlen = 0


Logauszug nach nicht-funktionierendem 'reread'

2019.12.26 13:04:14 5: Dunsthaube: set called with reread
2019.12.26 13:04:14 5: Dunsthaube: GetUpdate called (reread)
2019.12.26 13:04:14 5: Dunsthaube: AddToQueue adds type update to URL https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de, no data, header Authorization: Bearer $sid
Content-Type: application/json, retry 0, initial queue len: 0
2019.12.26 13:04:14 5: Dunsthaube: HandleSendQueue called, qlen = 1
2019.12.26 13:04:14 4: Dunsthaube: HandleSendQueue sends update with timeout 2 to https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de, No Data,
header: Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json
2019.12.26 13:04:14 5: HttpUtils url=https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de
2019.12.26 13:04:14 4: IP: api.mcs3.miele.com -> 52.232.28.91
2019.12.26 13:04:14 5: HttpUtils request header:
PUT /v1/devices/000xxxxxxxxx?language=de HTTP/1.0
Host: api.mcs3.miele.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json

2019.12.26 13:04:14 4: https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de: HTTP response code 405
2019.12.26 13:04:14 5: HttpUtils https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx?language=de: Got data, length: 52
2019.12.26 13:04:14 5: HttpUtils response header:
HTTP/1.1 405 Method Not Allowed
...
Und ab hier läufts dann natürlich schief. Weitere Zeilen weggelassen, außer den beiden letzten:
...
2019.12.26 13:04:17 4: Dunsthaube: Read response to update didn't match any Reading
2019.12.26 13:04:17 5: Dunsthaube: HandleSendQueue called, qlen = 0


Logauszug nach Aufruf von "set Dunsthaube Licht_ on"
2019.12.26 13:02:39 5: Dunsthaube: set called with Licht_ on
2019.12.26 13:02:39 5: Dunsthaube: set found option Licht_ in attribute set01Name
2019.12.26 13:02:39 5: Dunsthaube: MapConvert called from Set converted on to 1 with reversed map on:1, off:2,
2019.12.26 13:02:39 4: Dunsthaube: set will now set Licht_ -> 1
2019.12.26 13:02:39 5: Dunsthaube: AddToQueue adds type set01 to URL https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions, data {"light":$val}, header Authorization: Bearer $sid
Content-Type: application/json, retry 0, initial queue len: 0
2019.12.26 13:02:39 5: Dunsthaube: HandleSendQueue called, qlen = 1
2019.12.26 13:02:39 5: Dunsthaube: HandleSendQueue - call with HTTP METHOD: PUT
2019.12.26 13:02:39 4: Dunsthaube: HandleSendQueue sends set01 with timeout 2 to https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions,
data: {"light":1},
header: accept: */*
Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json
2019.12.26 13:02:39 5: HttpUtils url=https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions
2019.12.26 13:02:39 4: IP: api.mcs3.miele.com -> 52.232.28.91
2019.12.26 13:02:39 5: HttpUtils request header:
PUT /v1/devices/000xxxxxxxxx/actions HTTP/1.0
Host: api.mcs3.miele.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Authorization: Bearer DE_xxxxxxxxxxxxxxxxxfa5c899
Content-Type: application/json
Content-Length: 11

2019.12.26 13:02:40 4: https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions: HTTP response code 204
2019.12.26 13:02:40 5: HttpUtils https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions: Got data, length: 0
2019.12.26 13:02:40 5: HttpUtils response header:
HTTP/1.1 204 No Content
Date: Thu, 26 Dec 2019 12:02:40 GMT
Content-Type: application/octet-stream
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=15724800; includeSubDomains
2019.12.26 13:02:40 4: Dunsthaube: Read callback: request type was set01 retry 0,
header: HTTP/1.1 204 No Content
Date: Thu, 26 Dec 2019 12:02:40 GMT
Content-Type: application/octet-stream
Connection: close
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Access-Control-Allow-Methods: PUT, GET, POST, OPTIONS
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=15724800; includeSubDomains, no body
2019.12.26 13:02:40 5: Dunsthaube: Read callback: body empty
2019.12.26 13:02:40 5: Dunsthaube: ExtractSid called, context set, num 01
2019.12.26 13:02:40 5: Dunsthaube: GetRegex found precompiled reAuthRegex for  as (?^:500.Internal.Server.Error|Unauthorized|default.backend...401)
2019.12.26 13:02:40 5: Dunsthaube: CheckAuth is checking buffer with ReAuthRegex (?^:500.Internal.Server.Error|Unauthorized|default.backend...401)
2019.12.26 13:02:40 5: Dunsthaube: CheckAuth decided no authentication required


Logauszug nach Aufruf von "set Dunstdummy on"
2019.12.26 13:29:21 4: dummy set Dunstdummy on
2019.12.26 13:29:21 3: curl -X PUT 'https://api.mcs3.miele.com/v1/devices/000xxxxxxxxx/actions' -H 'accept: */*' -H 'Content-Type: application/json' -H 'Authorization: Bearer DE_2c50fa09612b9011fdd9235b9bc68267' -d '{"light":1}' &
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100    11    0     0  100    11      0      9  0:00:01  0:00:01 --:--:--     9
100    11    0     0  100    11      0      4  0:00:02  0:00:02 --:--:--     4
100    11    0     0  100    11      0      3  0:00:03  0:00:02  0:00:01     3


Woran könnte es liegen?

Dank im Voraus für jede Hilfe!

-Franz
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 27 Dezember 2019, 01:34:48
Warum auch immer, macht er wieder ein PUT bei reread.
Versuch mal deine set01XX Attribute set02XX umzubenennen.
Wenn es nicht reicht, das Problem zu umgehen, muss wahrscheinlich Stefan schauen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 27 Dezember 2019, 13:18:47
Danke für den Hinweis auf das PUT an der falschen Stelle (hätte ich auch selbst sehen können, war aber dann schon zu beriebsblind).

Leider hat der Vorschlag mit dem Umnummerieren der set01XX Attribute nichts gebracht. Das Setzen von  setxxMethod=PUT scheint sehr 'sticky' zu sein und wird dann wohl auch vom reread genommen. Da das set-mit-PUT wohl erst am 8.11. implementiert wurde (laut Kommentar in 98_HTTPMOD.pm), ist's vielleicht kein Wunder, dass es noch nicht auffiel.

-Franz
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Dezember 2019, 19:37:00
Hallo Franz,

da bist Du über einen Bug gestolpert.
Bitte probier mal die angehängte neue Version.

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 27 Dezember 2019, 20:24:34
Hallo Stefan,
es tut jetzt!
Vielen Dank und ein frohes Neues!

-Franz
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 28 Dezember 2019, 19:48:01
Zitat von: StefanStrobel am 23 Dezember 2019, 12:33:50
Hallo holle75,

Das Abfragen von Webseiten macht HTTPMOD schon immer asynchron ohne zu blockieren.
Eventuell hängt es aber an den DNS-Abfragen.
Das kannst Du über das globale Attribut dnsServer steuern (siehe https://forum.fhem.de/index.php/topic,53309.msg449992.html#msg449992)

Gruß
    Stefan

Merci Stefan, attr dnsServer  habe ich schon angelegt und mit der IP meiner FritzBox belegt. Das war wohl falsch. Jetzt auf den DNS Server der auch IN der Fritte angegeben ist umgestellt und werde beobachten und berichten.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Romoker am 01 Januar 2020, 20:24:28
Die Attribut-Templates sind schon eine tolle Sache. Ich habe heute das Template DWD_weather_warnings ausprobiert und bin über einen kleinen Fehler gestolpert, mit der Folge, dass die JSON-Struktur nicht als gültig erkannt wurde. Ursache war ein überflüssiges Semikolon in der preProcessRegex-Definition:
s/warnWetter..............|\);;|\t|\n|\r//g
Mit dieser Definition funktioniert das Template:
s/warnWetter..............|\);|\t|\n|\r//g

Vielleicht kann der Maintainer bei Gelegenheit das Attribut-Template korrigieren.

Ich wünsche allen ein gutes neues FHEM-Jahr 2020
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 02 Januar 2020, 07:06:39
Gutes neues zusammen!

Danke für die Rückmeldung zu attrTemplate@HTTPMOD  :) . Problem beim DWD-template ist mit dem heutigen Update gefixt.

(Anmerkung: Solche Meldungen bitte lieber in dem "Fragen..."-Thread speziell zu den attrTemplates lt. MAINTAINER.txt).
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 02 Januar 2020, 15:10:05
Hi,

kann man über HTTPMOD auch 2 Values in ein setURL übergeben?

   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   http://192.168.178.128/ocf/$val2/shutter/1


Ich würde gern set HTTPMOD Taster val val2.

VG
René

PS: noch eine Frage... aus irgendwelchen umstanden, verliert Interval sehr oft seinen Wert und ich muss es neu setzen. keine ahnung, warum das nicht gespeichert bleibt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 02 Januar 2020, 17:02:52
... bekomme, da ich HTTPMOD Readings in einem DOIF nutze, wenn update von Readings schieflaufen, gerne mal Fehler a la


2020.01.02 15:48:09 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 18284) line 1.
2020.01.02 15:48:09 3: eval: Container_XTENDER_Schalter_BoilerAnAusDOIF: warning in condition c01
2020.01.02 15:48:11 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 18301) line 1.
2020.01.02 15:48:11 3: eval: Container_XTENDER_Schalter_BoilerAnAusDOIF: warning in condition c01
2020.01.02 16:01:09 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 19787) line 1.
2020.01.02 16:01:09 3: eval: Container_XTENDER_Schalter_BoilerAnAusDOIF: warning in condition c01


im fhem-log. Wie kann ich eine "0" in diesem Fall für das entsprechende Reading in HTTPMOD ersetzen?

commandref gibt mir hier viele Möglichkeiten wie MaxAge, MaxAgeReplacement, MaxAgeReplacementMode, DeleteIfUnmatched, DeleteOnError, und wahrscheinlich auch das attr, was man dafür verwenden sollte  .... nur welches macht das von mir angedachte und wie genau?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Januar 2020, 18:25:08
Hallo holle75,

Zunächst kannst kannst Du beim Parsen schon entscheiden, ob ein leerer String überhaupt ein zulässiger Wert ist. Falls Du das mit Regexes machst und für das Reading ein (.*) verwendest, könntest Du den durch (.+) ersetzen, dann matcht der leere String nicht (siehe Perl Regexes).

Danach kannst Du das Ergebnis mit einer Perl-Expression im Attribut readingXYOExpr weiterverarbeiten und z.B. Werte ersetzen.

Zudem kannst Du bei DOIF die Bedingung so umformulieren, dass ein leerer String nicht zu Fehlern führt.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 03 Januar 2020, 19:45:16
Zitat von: StefanStrobel am 03 Januar 2020, 18:25:08
Hallo holle75,

Zunächst kannst kannst Du beim Parsen schon entscheiden, ob ein leerer String überhaupt ein zulässiger Wert ist. Falls Du das mit Regexes machst und für das Reading ein (.*) verwendest, könntest Du den durch (.+) ersetzen, dann matcht der leere String nicht (siehe Perl Regexes).

Danach kannst Du das Ergebnis mit einer Perl-Expression im Attribut readingXYOExpr weiterverarbeiten und z.B. Werte ersetzen.

Zudem kannst Du bei DOIF die Bedingung so umformulieren, dass ein leerer String nicht zu Fehlern führt.

Gruß
    Stefan

Danke Stefan, meine Regexes sind leider ohne .*


get02Regex <FloatValue>([1-3][0-9]\.?[0-9]?[0-9]?)

get05Regex <FloatValue>([-.0-9]*)


ich hatte das Gefühl, da schon recht explizit zu sein?

Wie formuliere ich die Bedingung in dem DOIF um?

Im Moment sieht´s so aus:

.... [XtenderReadout:Volt_Batt] > 27 and [XtenderReadout:Charge_Discharge_W] > 0 ....
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 03 Januar 2020, 19:48:37
Na ja,
get05Regex <FloatValue>([-.0-9]*)
ist im Prinzip nur ein "erweitertes .*"...
Mach' mal
get05Regex <FloatValue>([-.0-9]+)

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 03 Januar 2020, 20:10:13
Danke, probier ich
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 04 Januar 2020, 00:49:06
Hi,

ich versuche gerade folgendes:

Ein Device soll ein ein eigenes Reading in HTTPMOD setzen, dieses Reading (eine URL) soll dann genommen werden und in einen setURL genutzt werden...
Ich glaube es scheitert schon beim Anlegen des Readings, bzw. ich kann es dadurch von außen auch nicht setzen.

Ob der Rest richtig ist wäre dann auch noch zu begutachten...

Attributes:
   enableControlSet 1
   get01Name  Taster_WiserLink
   get01RegOpt g
   get01Regex \/(wlss[0-9]*)
   get01URL   http://192.168.178.128/ocf/oic/res
   get02Name  Taster_OpenLevel
   get02RegOpt g
   get02Regex "openLevel":[ \t]+([\d]+)
   get03Name  Taster_WiserRoom
   get03RegOpt g
   get03Regex "wiserone\.room":[ \t]+"([\d]+_[\w]+_*[\w]*)"
   get04Name  Taster_WiserName
   get04RegOpt g
   get04Regex "n":[ \t]+"([\w]*[\s\d]*)"
   get05JSON  sceneValues
   get05Name  globaleSzenen
   get05Poll  1
   get05RecombineExpr join " ", @matchlist
   get05URL   http://192.168.178.128/ocf/sceneCollection/0
   get06JSON  sceneValues
   get06Name  lokaleSzenen
   get06Poll  1
   get06RecombineExpr join ",", @matchlist
   get06URL   http://192.168.178.128/ocf/sceneCollection/1
   getHeader1 Content-Type: application/json
   getPoll    1
   getURL     http://192.168.178.128/ocf/deviceStatus
   httpVersion 1.1
   reading03Name Taster_URL
   readingMaxAge 300
   readingMaxAgeReplacement "offline"
   readingMaxAgeReplacementMode text
   replacement03Mode reading
   replacement03Regex %Taster_URL%
   replacement03Value Taster_URL
   room       WISER
   set01Data  {"isIrrelevant": false,"lastScene": "$val"}
   set01Name  setGlobaleSzenen
   set01TextArg 1
   set01URL   http://192.168.178.128/ocf/sceneCollection/0
   set02Data  {"isIrrelevant": false,"lastScene": "$val"}
   set02Name  setLokaleSzenen
   set02TextArg 1
   set02URL   http://192.168.178.128/ocf/sceneCollection/1
   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   %Taster_URL%
   set03replacement03Value Taster_URL
   userattr   get01Decode get01JSON get01Name get01Poll:0,1 get01RecombineExpr get01RegOpt get01Regex get01URL get01extractAllJSON:0,1,2 get02ExtractAllJSON:0,1,2 get02JSON get02Name get02Poll:0,1 get02RecombineExpr get02RegOpt get02Regex get02URL get03Name get03Poll:0,1 get03RecombineExpr get03RegOpt get03Regex get03URL get04Name get04RegOpt get04Regex get05JSON get05Name get05Poll:0,1 get05RecombineExpr get05URL get06JSON get06Name get06Poll:0,1 get06RecombineExpr get06URL getHeader1 getPoll:0,1 getURL reading03Name readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode:text,reading,internal,expression,delete replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value set01Data set01Hint set01Name set01TextArg:0,1 set01URL set02Data set02Hint set02Name set02TextArg:0,1 set02URL set03Data set03Hint set03IMap set03Name set03URL set03replacement03Value
   verbose    0


Ich habe versucht über die Attribute ein neues Reading anzulegen, was ja schon irgendwie nicht klappt:
   reading03Name Taster_URL

Dann soll das Reading (Inhalt von Taster_URL)  genutzt werden und in meinem set03URL ersetzt werden:

   replacement03Mode reading
   replacement03Regex %Taster_URL%
   replacement03Value Taster_URL

   set03Name  Taster
   set03URL   %Taster_URL%
   set03replacement03Value Taster_URL


Ist das alles so richtig und wo liegt das Problem?
replacement03Value sollte gar nicht notwendig sein oder?

VG
René
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: VB90 am 04 Januar 2020, 18:07:15
Hallo,

ich habe, wie wir wohl alle einige "Geräte" per httpmod eingebunden.

Eines davon ist eine LED-Lichterkette mit WLAN und Gedöns, welche ich dank diesem hilfreichen Beitrag (https://forum.fhem.de/index.php/topic,93197.msg1004834.html#msg1004834) in FHEM einbinden konnte.
Funktioniert soweit sehr gut.

Heute wollte ich diesem Gerät nun mittels Alexa-Modul quasi eine Sprachsteuerung verpassen.
Mittels "attr AlexaName " also einen entsprechenden Namen vergeben.


Jedoch findet sich trotz allem Versuchen das Gerät nicht in der Alexa-App um es bedienen zu können.

Um den Fehler einzugrenzen, habe ich nun eine Tankstelle aus dem Spritpreismonitor ebenfalls in Alexa einbinden wollen.
Die Abfrage der Benzinpreise erfolgt ebenfalls über httpmod, insofern zumindest deutliche Ähnlichkeiten der Geräte.

Leider setzt sich diese auch in der Einbindung bei Alexa fort. Ich "sehe" die Tankstelle nicht.

Ergo schliesse ich daraus, das httpmod-Geräte nicht per "attr AlexaName" eingebunden und abgefragt, geschweige denn geschalten werden können.

Nun die Frage: ist dies ein allgemeines "Problem", oder liegt es an meiner Konfig?
Ist es ein Problem, oder ist meine Idee mal wieder eine von denen, die schlichtweg nicht umsetzbar sind?

Danke für eure Unterstützung.

vb

edit:

Danke, erledigt.
Der "Fehler"  lag natürlich bei mir.
Das Alexa-Modul erwartet ein "set on/off" um schalten zu können.
Dies ist in den httpmod-Geräten von Haus aus natürlich nicht drin, bzw im Fall der Twinkly als an/aus definiert.
Eine kleine Änderung daran und schon funktioniert es.

vb
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 Januar 2020, 19:19:25
Zitat von: VB90 am 04 Januar 2020, 18:07:15
Hallo,

ich habe, wie wir wohl alle einige "Geräte" per httpmod eingebunden.

Eines davon ist eine LED-Lichterkette mit WLAN und Gedöns, welche ich dank diesem hilfreichen Beitrag (https://forum.fhem.de/index.php/topic,93197.msg1004834.html#msg1004834) in FHEM einbinden konnte.
Funktioniert soweit sehr gut.

Heute wollte ich diesem Gerät nun mittels Alexa-Modul quasi eine Sprachsteuerung verpassen.
Mittels "attr AlexaName " also einen entsprechenden Namen vergeben.


Jedoch findet sich trotz allem Versuchen das Gerät nicht in der Alexa-App um es bedienen zu können.

Um den Fehler einzugrenzen, habe ich nun eine Tankstelle aus dem Spritpreismonitor ebenfalls in Alexa einbinden wollen.
Die Abfrage der Benzinpreise erfolgt ebenfalls über httpmod, insofern zumindest deutliche Ähnlichkeiten der Geräte.

Leider setzt sich diese auch in der Einbindung bei Alexa fort. Ich "sehe" die Tankstelle nicht.

Ergo schliesse ich daraus, das httpmod-Geräte nicht per "attr AlexaName" eingebunden und abgefragt, geschweige denn geschalten werden können.

Nun die Frage: ist dies ein allgemeines "Problem", oder liegt es an meiner Konfig?
Ist es ein Problem, oder ist meine Idee mal wieder eine von denen, die schlichtweg nicht umsetzbar sind?

Danke für eure Unterstützung.

vb

edit:

Danke, erledigt.
Der "Fehler"  lag natürlich bei mir.
Das Alexa-Modul erwartet ein "set on/off" um schalten zu können.
Dies ist in den httpmod-Geräten von Haus aus natürlich nicht drin, bzw im Fall der Twinkly als an/aus definiert.
Eine kleine Änderung daran und schon funktioniert es.

vb
alexaName reicht nicht, um ein Device per Alexa abfragen zu können. Die Alexa API kennt nut bestimmte Arten von Devices. Diese werden mit genericDeviceType genauer definiert, und die müssen bestimmte Characteristics haben. Lies bitte https://wiki.fhem.de/wiki/Alexa_und_Mappings#homebridgeMapping
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Januar 2020, 21:11:26
Hallo René,

Wenn es mit Replacements oder anderen Features von HTTPMOD mal nicht klappt, ist es eigentlich immer sinnvoll verbose für das Gerät auf 5 zu setzen und im Log zu verfolgen, was passiert.
Eine Sache fällt mir aber bei Deiner Problembeschreibung schon auf:

Das bloße setzen eines Attributs wie reading03Name erzeugt noch kein Reading. Erst wenn eine HTTP-Response geparsed wird und ein passendes reading03Regex o.ä. matcht, wird das Reading erzeugt.
Wenn Du zum Testen einfach ein Reading mit einem bestimmten Wert benötigst, kannst Du dafür den Fhem-Befehl  setreading verwenden.
Vielleicht hängt es ja schon an dieser Kleinigkeit.

Falls es damit nicht zu lösen ist, poste doch einen Log-Auszug bei verbose 5

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 06 Januar 2020, 21:37:35
Hi Stefan,

ich glaube ich habe nur große Probleme der englischen Doku zu folgen... viell. liegts einfach nur daran. Nach 1000 Versuchen hats jetzt geklappt.

   readingMaxAgeReplacement "offline"
   readingMaxAgeReplacementMode text
   replacement03Mode reading
   replacement03Regex %Taster_URL%
   replacement03Value Taster_URL
   room       WISER
   set01Data  {"isIrrelevant": false,"lastScene": "$val"}
   set01Name  setGlobaleSzenen
   set01TextArg 1
   set01URL   http://192.168.178.128/ocf/sceneCollection/0
   set02Data  {"isIrrelevant": false,"lastScene": "$val"}
   set02Name  setLokaleSzenen
   set02TextArg 1
   set02URL   http://192.168.178.128/ocf/sceneCollection/1
   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   %Taster_URL%
   userReadings Taster_URL


Ich habe mir jetzt ein eigenes userReading gesetzt  userReadings Taster_URL.

Und dann folgendes
replacement03Mode reading
replacement03Regex %Taster_URL%
replacement03Value Taster_URL
set03URL   %Taster_URL%


damit habe ich es hinbekommen, dass ein readingsProxy per setFn erst eine URL in HTTPMOD:Taster_URL schreibt, HTTPMOD ersetzt mir dann mit den Einstellungen den Wert von set03URL und dann schalte ich nur noch den Taster (set03Name  Taster).

Dafür habe ich jetzt Stunden gebraucht... :(

Es wäre schön gewesen, wenn ich einfach 2 Werte an den set03 hätte übergeben können:
Zitat von: fireball am 02 Januar 2020, 15:10:05
Hi,

kann man über HTTPMOD auch 2 Values in ein setURL übergeben?

   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   http://192.168.178.128/ocf/$val2/shutter/1


Ich würde gern set HTTPMOD Taster val val2.

VG
René

PS: noch eine Frage... aus irgendwelchen umstanden, verliert Interval sehr oft seinen Wert und ich muss es neu setzen. keine ahnung, warum das nicht gespeichert bleibt.

Noch eine andere Sache...    set03replacement03Value Taster_URL das hat irgendwie gar nicht funktioniert... wo lag da mein Denkfehler? Ich hatte das so im Forum gefunden... Damit wurde aber nichts ersetzt.

VG+Danke
René
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 28 Januar 2020, 12:32:50
EDIT: gelöst
Ich habe es doch noch gefunden. Durch setzen des folgenden Attributs wird das Parsen aktiviert.

attr maingau set01ParseResponse 1


Jedoch passen die Regex nun doch nicht :-( , da sind wohl noch einige nicht druckbare Zeichen dazwischen.

Auch die Regex habe ich jetzt gefunden, die Lösung war dann "any non-word character"

attr maingau reading02Regex (?<=<h2>Vielen Dank!<\/h2>)\W.*<p>(\w.*)<\/p>
attr maingau reading03Regex (?<=<h1>Hinweis<\/h1>)\W.*<p>(\w.*)<\/p>

Und nun das Log dazu

2020.01.28 16:07:34.750 5: maingau: ExtractReading for context set, num 01 - no individual parse definition
2020.01.28 16:07:34.751 5: maingau: UpdateReadingList created list of reading.* nums to parse during getUpdate as 01 02 03
2020.01.28 16:07:34.751 5: maingau: Read starts parsing response to set01 with defined readings: 01,02,03
2020.01.28 16:07:34.751 5: maingau: GetRegex found precompiled Regex for reading01 as (?^:((?<=tid=).*))
2020.01.28 16:07:34.751 5: maingau: ExtractReading _tid with regex /(?^:((?<=tid=).*))/...
2020.01.28 16:07:34.754 5: maingau: ExtractReading _tid did not match
2020.01.28 16:07:34.754 5: maingau: GetRegex found precompiled Regex for reading02 as (?^:((?<=<h2>Vielen Dank!<\/h2>     <p>)(\w.*)<\/p>))
2020.01.28 16:07:34.754 5: maingau: ExtractReading Message with regex /(?^:((?<=<h2>Vielen Dank!<\/h2>     <p>)(\w.*)<\/p>))/...
2020.01.28 16:07:34.756 5: maingau: ExtractReading Message did not match
2020.01.28 16:07:34.756 5: maingau: PrecompileRegexAttr precompiled reading03Regex /(?<=<h1>Hinweis<\/h1>)\W.*<p>(\w.*)<\/p>/ to (?^:(?<=<h1>Hinweis<\/h1>)\W.*<p>(\w.*)<\/p>)
2020.01.28 16:07:34.756 5: maingau: ExtractReading Message with regex /(?^:(?<=<h1>Hinweis<\/h1>)\W.*<p>(\w.*)<\/p>)/...
2020.01.28 16:07:34.758 5: maingau: 1 matches, matchlist = Zu dem von Ihnen angegebenen Ablesedatum haben wir bereits einen Zählerstand gespeichert. Die Angabe eines weiteren Zählerstands zu diesem Datum ist nicht möglich.
2020.01.28 16:07:34.758 5: maingau: ExtractReading for reading03-1 sets Message to Zu dem von Ihnen angegebenen Ablesedatum haben wir bereits einen Zählerstand gespeichert. Die Angabe eines weiteren Zählerstands zu diesem Datum ist nicht möglich.
2020.01.28 16:07:34.758 4: maingau: Read response matched 1, unmatch 2 Reading(s)
2020.01.28 16:07:34.758 5: maingau: Read response to set01 matched Message



Hallo zusammen,
Ich setze auf einer html Seite einen Wert und erhalte im httbody auch Rückmeldungen, die ich gerne als reading lesen möchte. Nur leider mache ich da wohl einen Fehler und es werden keine readings erstellt.

- Der Login funktioniert
- Das Setzen auf der Seite funktioniert ebenfalls


defmod maingau HTTPMOD none 0
attr maingau enableControlSet 1
attr maingau enableCookies 1
attr maingau handleRedirects 1

# Terminal ID Aufbereiten, um sie wieder in die nächste URL einzusetzen
attr maingau reading01Name _tid
attr maingau reading01Regex ((?<=tid=).*)
attr maingau replacement01Mode reading
attr maingau replacement01Regex %%_tid%%
attr maingau replacement01Value _tid

# Notwendiges Login erkennen
attr maingau reAuthRegex Anmeldung mit E-Mail

# Passwort aus der Datei holen
attr maingau replacement02Mode key
attr maingau replacement02Regex %%BenutzerPasswort%%
attr maingau replacement02Value BenutzerPasswort

# Passwort und tid müssen hier rein. Meinen Namen und meine Kundennummer ist mit XXXX ersetzt
attr maingau sid01Data1 login%5B0%5D%5Bloginname%5D=XXXXXXXXX%2C+XXXXXXXX&login%5B0%5D%5Bpin%5D=XXXXXXXXX&login%5B0%5D%5Bpassword%5D=%%BenutzerPasswort%%&tid=%%_tid%%&step=default
attr maingau sid01URL https://onlineservice.service-rz.de/?act=login&werknr=52

# Das aktuelle Datum zum ersetzen vorbereiten
attr maingau replacement03Mode expression
attr maingau replacement03Regex %%Datum%%
attr maingau replacement03Value {strftime('%d.%m.%Y', localtime)}

# Setzen des Zählerstandes (steht in $val)  und einsetzen des Tagesdatums
attr maingau set01Name Zaehlerstand
attr maingau set01URL https://onlineservice.service-rz.de/?act=zaehlerstand&werknr=52&tid=%%_tid%%
attr maingau set01Data1 zaehlerstand%5B0%5D%5Bablesedatum%5D=%%Datum%%&zaehlerstand%5B1%5D%5BzaehlerstandNeu%5D=$val&zaehlerstand%5B0%5D%5BbenachrichtigungPerMail%5D=J&tid=%%_tid%%&step=default

# Lesen der Rückmeldung
attr maingau reading02Name Message
attr maingau reading02Regex ((?<=<h2>Vielen Dank!<\/h2>     <p>)(\w.*)<\/p>)
attr maingau reading03Name Message
attr maingau reading03Regex ((?<=<h1>Hinweis<\/h1>                     <p>)(\w.*)<\/p>)


In der Logdatei kommen trotz verbose 5 keine Meldungen zum Erstellen der readings.

Wie muss die readings benennen, damit sie beim set01 aus der Rückmeldung gelesen werden?
Die Regex habe ich in einem Regex Tester erstellt und sollte so passen.

Der Name der Readings darf ruhig identisch sein, da immer nur eine Meldung kommt, die jedoch von der Regex unterschiedlich ist.

Hier noch eine Beispiel Meldung.

        <div class="modal-close-button fa fa-close"></div>
                <div class="modal-inner">
                <h1>Hinweis</h1>
                    <p>Zu dem von Ihnen angegebenen Ablesedatum haben wir bereits einen Zählerstand gespeichert. Die Angabe eines weiteren Zählerstands zu diesem Datum ist nicht möglich.</p>
                                <a href="#" class="button button-primary" onclick="closeModal();return false;">Schließen</a>
                </div>
        </div>


Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 29 Januar 2020, 11:49:07
Hallo zusammen,

wie kann ich denn den httpbody im device wieder löschen.

Ich hatte folgendes gesetzt

attr device showBody 1    zum testen
attr device showBody 0    nach dem testen

# Es wird jedoch weiterhin der alte httpbody angezeigt

deleteattr device showBody

# brachte auch keinen Erfolg

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 Januar 2020, 18:04:51
{ delete($defs{"devicename"}{"internalname"}) }
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 30 Januar 2020, 14:14:39
Okay, das probiere ich aus.
Gibt es einen Grund warum es nicht mit
httpBody 0
auch wieder gelöscht wird?

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 30 Januar 2020, 22:50:20
Den Bedarf hatte ich bisher nicht gesehen.
In der nächsten Version baue ich es aber gerne ein.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 31 Januar 2020, 17:01:33
Zitat von: StefanStrobel am 30 Januar 2020, 22:50:20
Den Bedarf hatte ich bisher nicht gesehen.
In der nächsten Version baue ich es aber gerne ein.
Ich faende es angenehm. Wenn man sich mal laengere Seiten angesehen hat bleibt der httpbody halt im Fhemweb stehen und man muss ziemlich blaettern, bis man bei den readings und Attributen ist.
Sobald alles laeuft schau ich eher selten drauf.

Gruss
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Jostar am 01 Februar 2020, 11:31:43
Hallo zusammen,

httpmod ist ja ein mächtiges Modul, vielen Dank erst mal dafür!

Ich nutze es unter anderem um eine IP-Cam jede Sekunde abzufragen, ob sie denn einen Alarm erkannt hat. Eine andere Möglichkeit kenne ich leider nicht (andere Kameras können aktiv eine Website aufrufen, z.B.). Dabei wird in der Kamera auch richtig "login" und "logout" protokolliert und nach einem Tag ist das Log (natürlich) voll. Gibt es eine Möglichkeit die Verbindung offen zu halten, also nach erfolgreichem login auf ein logout zu verzichten? "keepalive" z.B. gibt es bei HttpUtils.


defmod Kamera7status HTTPMOD none 180
attr Kamera7status get02Name alarm
attr Kamera7status get02Poll 1
attr Kamera7statusget02URL http://user:passw@192.168.178.137:8037/cgi-bin/configManager.cgi?action=getConfig&name=MotionDetect


Vielen Dank und Grüße
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 01 Februar 2020, 11:57:56
Keepalive in HttpUtils bezieht sich auf die TCP-Verbindung, und funktioniert nur wenn der Zielserver es unterstützt. Das hat aber nichts mit dem Timeout der Sitzung auf http Ebene. Keepalive macht keine erneuerte Abfrage, das ist nicht die gleiche Schicht des TCP/IP Protokolls.

HTTPMOD macht kein Logoff. Der Zielserver hat ein Timeout, nachdem die Sitzung abläuft.
Evtl kannst Du die Anmeldung in HTTPMOD anders einbauen. Wenn z.B. die Cam ein Sitzungscookie pflegt, wäre enableCookies nicht schlecht, und wenn das nicht reicht, dann mit den Attribute reAuthRegex, sid & Co spielen.

Damit die Log nicht voll wächst, setze einfach verbose auf einen niedrigen Wert.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: somansch am 02 Februar 2020, 14:05:52
Ich habe seit dem letzten FHEM Update das Problem, dass der RequestHeader "User-Agent: Mozilla/5.0 (Windows NT 6.0)" nicht mehr akzeptiert wird  ???

Folgender Fehler: bad attribute name requestHeader.* (contains not A-Za-z/\d_\.- or is too long)

Ist das bekannt bzw. gewollt?

Danke und Gruß
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 02 Februar 2020, 16:00:04
entferne ".*" aus "requestHeader.*".
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: somansch am 02 Februar 2020, 18:32:16
Zitat von: frank am 02 Februar 2020, 16:00:04
entferne ".*" aus "requestHeader.*".

Funktioniert  :)

Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 16 März 2020, 18:02:14
@StefanStrobel
Hallo Stefan, ich habe ein HTTPMOD Device was meine Solaranlage ausliest. Dieses fährt mir wegen dem "cannotFork-Problem" innerhalb von zwei Tagen das RAM auf dem Raspi3 voll.

Link: https://forum.fhem.de/index.php/topic,84372.msg1032191.html#msg1032191

da es gerade eliminiert ist, direkt aus der cfg:
define XtenderReadout HTTPMOD none 10
attr XtenderReadout userattr get01Format get01Name get01Poll:0,1 get01PollDelay get01Regex get01URL get02Format get02Name get02Poll:0,1 get02Regex get02URL get03Name get03OMap get03Poll:0,1 get03PollDelay get03Regex get03URL get04Format get04Name get04Poll:0,1 get04Regex get04URL get05Format get05Name get05Poll:0,1 get05Regex get05URL get06Format get06Name get06Poll:0,1 get06PollDelay get06Regex get06URL get07Format get07Name get07Poll:0,1 get07PollDelay get07Regex get07URL readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode:text,reading,internal,expression,delete
attr XtenderReadout event-min-interval .*:1800
attr XtenderReadout event-on-change-reading Charge_Discharge_W:20,PV_Power_KW:0.05,PV_Power_W:50,Volt_Batt:0.3,SoC,Battery_cycle_phase,Temp_Batt,PV_Day_KWh
attr XtenderReadout event-on-update-reading .*
attr XtenderReadout get01Format %.1f
attr XtenderReadout get01Name SoC
attr XtenderReadout get01Poll 1
attr XtenderReadout get01PollDelay 60
attr XtenderReadout get01Regex <FloatValue>([1-9][0-9]\.?[0-9]?[0-9]?)
attr XtenderReadout get01URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=BSP&infoId=7002
attr XtenderReadout get02Format %.2f
attr XtenderReadout get02Name Volt_Batt
attr XtenderReadout get02Poll 1
attr XtenderReadout get02Regex <FloatValue>([1-3][0-9]\.?[0-9]?[0-9]?)
attr XtenderReadout get02URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=BSP&infoId=7000
attr XtenderReadout get03Name Battery_cycle_phase
attr XtenderReadout get03OMap 0:Bulk, 1:Absorption, 2:Equalize, 3:Floating, 6:R.Floating ,7:Per.Absorption
attr XtenderReadout get03Poll 1
attr XtenderReadout get03PollDelay 60
attr XtenderReadout get03Regex <FloatValue>([0-9])
attr XtenderReadout get03URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=VT1&infoId=11038
attr XtenderReadout get04Format %.2f
attr XtenderReadout get04Name PV_Power_KW
attr XtenderReadout get04Poll 1
attr XtenderReadout get04Regex <FloatValue>([0-1]\.?[0-9]?[0-9]?)
attr XtenderReadout get04URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=VT1&infoId=11004
attr XtenderReadout get05Format %2d
attr XtenderReadout get05Name Charge_Discharge_W
attr XtenderReadout get05Poll 1
attr XtenderReadout get05Regex <FloatValue>([-.0-9]+)
attr XtenderReadout get05URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=BSP&infoId=7003
attr XtenderReadout get06Format %.1f
attr XtenderReadout get06Name Temp_Batt
attr XtenderReadout get06Poll 1
attr XtenderReadout get06PollDelay 60
attr XtenderReadout get06Regex <FloatValue>([.0-9]*)
attr XtenderReadout get06URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=BSP&infoId=7029
attr XtenderReadout get07Format %.2f
attr XtenderReadout get07Name PV_Day_KWh
attr XtenderReadout get07Poll 1
attr XtenderReadout get07PollDelay 600
attr XtenderReadout get07Regex <FloatValue>([0-1]?[0-9]\.?[0-9]?[0-9]?)
attr XtenderReadout get07URL https://einServer.com/webservice.asmx/ReadUserInfo?email=net@xx.com&pwd=xxxxxx&installationNumber=111111&device=VT1&infoId=11007
attr XtenderReadout group Xtender
attr XtenderReadout readingMaxAge 1200
attr XtenderReadout readingMaxAgeReplacement "outdated - was " . $val
attr XtenderReadout readingMaxAgeReplacementMode expression
attr XtenderReadout stateFormat {sprintf("Phase: %s - SoC: %.1f - PV: %2d Watt", ReadingsVal($name,"Battery_cycle_phase",0), ReadingsVal($name,"SoC",0), ReadingsVal($name,"PV_Power_W",0))}
attr XtenderReadout userReadings PV_Power_W {ReadingsVal("XtenderReadout","PV_Power_KW",0)*1000}
attr XtenderReadout verbose 2


Vielleicht hast du eine Idee, welches "böse" RegEx im Device genau das Problem verursacht ?

lieb Gruß und Danke fürs Schauen
H.

Edit: mehr Info (OS, PERL-Version, ...) im anderen Thread. Denke, dass das auch für andere Problemgeschädigte interessant sein dürfte.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: holle75 am 17 März 2020, 09:57:06
Dank @RudolfKoenigs Hinweis auf

attr <DEVICE> regexDecode utf-8

sieht es bis jetzt fantastisch aus. Dankeschön!

Ich beobachte.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 26 März 2020, 13:33:53
Ich habe das Problem dass aus der Webseite aus welcher ich Daten extrahieren will nur das erste Reading angezeigt wird. Die regex-Funktion habe ich mit dem online regex tester geprüft und es sollte eigentlich matchen.

Ein Teil der Datei die ich extrahieren möchte sieht wie folgt aus:

Zitat
                        <tbody><th scope="col">Prognosen</th><tr>
                         
                          <th scope="col">
                            <span>Donnerstag<span>26.3.</span></span>
                          </th>
                          <th scope="col">
                            <span>Freitag<span>27.3.</span></span>
                          </th>
                        </tr>
                        <tr>
                          <td>Erle</td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                        </tr>
                        <tr>
                          <td>Esche</td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                        </tr>
                        <tr>
                          <td>Hasel</td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                          <td>
                            <span class="slider_bg" alt="schwache Belastung">
                              <span class="slider" style="margin-left:40%">
                                <span class="sl_button"></span>
                              </span>
                            </span>
                          </td>
                        </tr>
                      </tbody></table>
                      <p class="laut">Keine Belastung durch folgende Pollen:</p>
                      <p>Ambrosia, Ampfer, Beifuss, Birke, Buche,
Edelkastanie, Eiche, Gerste, Gräser, Hagebuche, Löwenzahn, Linde,
Pappel, Platane, Roggen, Ulme, Wegerich, Weide, Weizen</p>

Die Definition:


defmod Pollenflug_2 HTTPMOD http://meteonews.ch/de/Biowetter/G2658903/Saanenmöser 86400
attr Pollenflug_2 userattr get1CheckAllReadings:0,1 reading01Name reading01RegOpt reading01Regex reading02Name reading02RegOpt reading02Regex reading03Name reading03RegOpt reading03Regex
attr Pollenflug_2 devStateStyle style="text-align:right;;;;"
attr Pollenflug_2 enableControlSet 1
attr Pollenflug_2 get1CheckAllReadings 1
attr Pollenflug_2 reading01Name Erle
attr Pollenflug_2 reading01Regex (?s)Erle.+?alt="(.+? Belastung)">.+?margin-left:(.+?%)
attr Pollenflug_2 reading02Name Esche
attr Pollenflug_2 reading02Regex (?s)>\Esche+?alt="(.+? Belastung)">.+?margin-left:(.+?%)
attr Pollenflug_2 reading03Name Hasel
attr Pollenflug_2 reading03Regex (?s)Hasel+?alt="(.+? Belastung)">.+?margin-left:(.+?%)
attr Pollenflug_2 room Wetterprognose

setstate Pollenflug_2 2020-03-26 12:53:14 Erle-1 schwache Belastung
setstate Pollenflug_2 2020-03-26 12:53:14 Erle-2 40%


Ich möchte die Werte für alle Allergene auslesen. Nur leider zeigt es mir nur diejenigen für Erle an. Das attribut "getCheckAllreadings 1" scheint wohl nichts zu nützen?!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 26 März 2020, 13:43:52
direkt hinter esche und hasel fehlt zb jeweils ein punkt in der regex.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 26 März 2020, 13:58:02
Ach ja ... das wars ... manchmal sieht man halt den Wald vor lauter Punkten nicht mehr.

Besten Dank für die rasche Hilfe!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEm2005 am 27 März 2020, 10:38:27
Ich wollte mir von der Seite https://www.mags.nrw/coronavirus-fallzahlen-nrw die Fallzahlen für einen bestimmten Bereich anzeigen lassen. Dazu habe ich Folgendes definiert:
define COVID19 HTTPMOD https://www.mags.nrw/coronavirus-fallzahlen-nrw 10

Die 10 Sekunden am Ende gelten nur während der Testphase.

Ich bekomme nur den HTTP-Header angezeigt. Ich war es gewohnt den Buffer angezeigt zu bekommen. Das INTERNAL 'httpheader' sieht wie folgt aus:

HTTP/1.1 200 OK
Date: Fri, 27 Mar 2020 09:27:39 GMT
Strict-Transport-Security: max-age=31536000; preload
Content-Type: text/html; charset=utf-8
Content-Language: de
X-Frame-Options: SAMEORIGIN
Cache-Control: public, max-age=7200
Vary: Cookie,Accept-Encoding
X-XSS-Protection: 1; mode=block
X-Content-Options: nosniff
X-Content-Type-Options: nosniff
X-Permitted-Cross-Domain-Policies: master-only
Content-Encoding: gzip
Content-Length: 27619
Connection: close


Werden unter bestimmten Unständen die Daten einer Seite nicht angezeigt?

Attribute sind zu diesem Zeitpunkt außer 'room' keine weiteren gesetzt.  Was kann ich machen um den 'buf' angezeigt zu bekommen?

Gruß Eberhard
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 27 März 2020, 12:14:28
vielleicht hilft das cookie attribut.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 27 März 2020, 13:20:55
Hallo zusammen,

ich versuche nun seit 2 Tagen mich dem Thema HTTPMOD zu nähern.
Verstehen tue ich ehrlicherweise immer noch nur Bahnhof.

Es geht doch im Grunde darum aus einer Webseite einen bestimmten Teil in eine Variable zu schreiben, oder?
Ich habe jetzt das halbe Internet (okay, so viel nicht) zu demThema versucht zu verstehen, ich stosse aber deutlich an meine Grenzen.
Auch das Nachstellen der vielen Beispiele hilft nicht.
RegEx-Tester und so weiter...alles versucht zu verstehen.

Mir bleiben also nur 3 Moglichkeiten:
1. Ihr habt eine Tipp für eine kleines Einsteigerseminar für Doofe.

2. Ich gebe auf.

3. Jemand hilft mir mit meinem Anwendungsfall (Web-Gui meienr Wallbox) und schubst mich in die richtige Richtung.
Mein HTML-Code:
<html>

<head>

  <title>ABL3W226002111 - CPA Diagnosis</title> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="refresh" content="40; URL=/sys_diag.html">
  <link rel="stylesheet" type="text/css" media="screen" href="/format.css" />

  <link rel="icon" type="image/png" href="/html/icons/favicon-16x16.png">
</head>

<body>


<div id="header">
  <img src="/html/icons/abls-logo.png" style="height: 40px; float: left;">
  <h1 style="float:left; text-align:center; line-height:53px; width:70%">Charge Point Administration</h1>
 
  <form action="lang_sel.html" method="GET"><select name="lang"><option selected="selected" value="en" />en&nbsp;</option>
<option value="de" />de&nbsp;</option>
<option value="ru" />ru&nbsp;</option>
</select><input type="submit" value="choose" /></form>
 
</div>

<ul id="liste" style="clear:left;">

    <li id=""><a href="/index.html">Overview</a></li>
    <li id=""><a href="/bc_show.html">Configuration</a></li>
    <li id=""><a href="/dc_show.html">Devices</a></li>
    <li id=""><a href="/pc_show.html">Products</a></li>
   
   
    <li id=""><a href="/ca_show.html">Certificates</a></li>

    <li id="ChoosenTab"><a href="/sys_diag.html">Diagnosis</a></li>
    <li id=""><a href="/show_log.html">Logs</a></li>

    <!-- <li id=""><a href="/ev_log.html">EV Log</a></li> -->
    <li id=""><a href="/sys_care.html">Maintenance</a></li>
     
    <!--  <li id=""><a href="/about.html">About</a></li> -->
   
    <!-- <li><a href="/loginout.html">Log Out</a></li> -->
</ul>

<div id="inhalt">



<h2>List of Devices</h2>

<table id="sys_diag">
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=host100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">Host </th>
<th> ABL, SBC-II (S/N 808829102298)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: host100, Physical ID: 0_0_0_0</td></tr>
<tr><td colspan="3"></td><td>HW: D, SW: 1.6p1, OS: 1.6p1</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=nad100" ><img src="/html/icons/status_nok.png" title="MISCONFIGURED" /></a></th>
<th colspan="2" class="second_column">Network Device </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: nad100, Physical ID: ppp0</td></tr>
<tr><td colspan="3"></td><td><li>Network State: Not connected</li>
</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=smgw100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">LGW </th>
<th> SEALAG, S5210LOGGINGGATEWAY (S/N 192901df)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: smgw100, Physical ID: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>HW: 1.1, SW: 1.38</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=evse100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">EVSE </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: evse100, Physical ID: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: EVSE, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><li>State: A1 ( A1_UNPLUGGED )</li>
<li>Actual Current Limit: 12.0 A (Ic)</li>
<li>Loadsetter's Current Limit: 12.0 A (Icmax)</li>
<li>Max. Current Limit: 16.0 A (min (Idefault & Irated))</li>
<li>Rated Current: 32.0 A</li>
<li>Default Current: 16.0 A</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=io100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">General Purpose IO </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: io100, Physical ID: 4_1_5_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td><li>Value of Channel 0 : 0</li><li>Value of Channel 1 : 0</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter101" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter101, Physical ID: 4_1_1_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=auth100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Card Reader </th>
<th> ABL, RFIDM60</th></tr>
<tr><td colspan="3"></td><td>Logical ID: auth100, Physical ID: 4_1_3_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: RFID, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V1.3</td></tr>
<tr><td colspan="3"></td><td><li>Last authentication by: 000000AEE274EB</li><li>Last type of authentication: ISO14443</li><li>Last time of authentication at: 2020/03/23 06:58:47</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> Gavazzi, EM340-DIN AV2 3 X S1 X (S/N 181294)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter100, Physical ID: 3_2_1_1, Parent device: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus RTU, Port: 2 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 341, SW: B 4</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> ENERGY_ACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">0.0</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">258.339</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">17.389</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">0.003</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">258.3</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">0.0</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> POWER_ACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> W</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> POWER_REACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> VAR</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">234.1</td><td> V</td><td>L1-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">231.9</td><td> V</td><td>L2-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">231.2</td><td> V</td><td>L3-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> OPERATING_HOURS </td> <td style="text-align:right;">0.0</td><td> H</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=breaker100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Breaker </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: breaker100, Physical ID: PB-0-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: RCCB</li><li>Maximum current: 0</li><li>Logical-ID Trigger Device: [meter100, evse100]</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=phro100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Phase Rotation </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: phro100, Physical ID: PHR-0-1</td></tr>
<tr><td colspan="3"></td><td>Phases will be mapped from 123N -> 123N
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit100, Physical ID: LIM-PL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit200" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit200, Physical ID: LIM-SL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
</table>



Devices indented under an EVSE are used by this EVSE.

</div>


<div id="footer">
Page loaded at: 2020/03/24 18:13:55 UTC acc. to operating system's time; This page reloads every 40 seconds.
<br/>
Copyright 2018 ABL,
<a href="http://www.abl.de">http://www.abl.de</a>,
<a href="mailto:info@abl.de">info@abl.de</a>
</div>

</body>

</html>


Ich benötige aus:
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">258.3</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
den Wert 258.3 in die Variable Verbrauch und
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
den Wert 0.0 in die Variable aktuelle-Leistung

Ich bin dankbar für jede Hilfe!

Viele Grüße
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 27 März 2020, 13:52:45
Hast du mal ein list deines httpmod devices?

Aus dem Bauch heraus würde ich die userattr so setzen:
attr DEVICE enableControlSet 1
attr DEVICE webCmd reread
attr DEVICE userattr reading010Name reading010OExpr reading010Regex reading020Name reading020OExpr reading020Regex
attr DEVICE reading010Name Verbrauch
attr DEVICE reading010OExpr $val =~ s/,/\./;; $val;;
attr DEVICE reading010Regex ENERGY_ACTIVE_IMPORT_INTERVAL[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
attr DEVICE reading020Name Leistung
attr DEVICE reading020OExpr $val =~ s/,/\./;; $val;;
attr DEVICE reading020Regex CURRENT_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 27 März 2020, 14:28:57
Hi,

schon mal vielen Dank für deine Hilfe!

Hier meine Device:
Internals:
   BUSY       0
   CFGFN     
   CHANGED   
   DEF        http://192.168.99.17:8300/sys_diag.html 700000
   FUUID      5e78fa86-f33f-a241-32da-0f3fe36afa67be9d
   Interval   700000
   LASTSEND   1585073639.77027
   MainURL    http://192.168.99.17:8300/sys_diag.html
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       wallbox
   NOTIFYDEV  global
   NR         80994
   NTFY_ORDER 50-wallbox
   STATE      ???
   TRIGGERTIME 1585773639.76723
   TRIGGERTIME_FMT 2020-04-01 22:40:39
   TYPE       HTTPMOD
   addr       http://192.168.99.17:8300
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.99.17:8300/sys_diag.html
   header     
   host       192.168.99.17
   httpbody   <html>

<head>

  <title>ABL3W226002111 - CPA Diagnosis</title> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="refresh" content="40; URL=/sys_diag.html">
  <link rel="stylesheet" type="text/css" media="screen" href="/format.css" />

  <link rel="icon" type="image/png" href="/html/icons/favicon-16x16.png">
</head>

<body>


<div id="header">
  <img src="/html/icons/abls-logo.png" style="height: 40px; float: left;">
  <h1 style="float:left; text-align:center; line-height:53px; width:70%">Charge Point Administration</h1>
 
  <form action="lang_sel.html" method="GET"><select name="lang"><option selected="selected" value="en" />en&nbsp;</option>
<option value="de" />de&nbsp;</option>
<option value="ru" />ru&nbsp;</option>
</select><input type="submit" value="choose" /></form>
 
</div>

<ul id="liste" style="clear:left;">

    <li id=""><a href="/index.html">Overview</a></li>
    <li id=""><a href="/bc_show.html">Configuration</a></li>
    <li id=""><a href="/dc_show.html">Devices</a></li>
    <li id=""><a href="/pc_show.html">Products</a></li>
   
   
    <li id=""><a href="/ca_show.html">Certificates</a></li>

    <li id="ChoosenTab"><a href="/sys_diag.html">Diagnosis</a></li>
    <li id=""><a href="/show_log.html">Logs</a></li>

    <!-- <li id=""><a href="/ev_log.html">EV Log</a></li> -->
    <li id=""><a href="/sys_care.html">Maintenance</a></li>
     
    <!--  <li id=""><a href="/about.html">About</a></li> -->
   
    <!-- <li><a href="/loginout.html">Log Out</a></li> -->
</ul>

<div id="inhalt">



<h2>List of Devices</h2>

<table id="sys_diag">
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=host100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">Host </th>
<th> ABL, SBC-II (S/N 808829102298)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: host100, Physical ID: 0_0_0_0</td></tr>
<tr><td colspan="3"></td><td>HW: D, SW: 1.6p1, OS: 1.6p1</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=nad100" ><img src="/html/icons/status_nok.png" title="MISCONFIGURED" /></a></th>
<th colspan="2" class="second_column">Network Device </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: nad100, Physical ID: ppp0</td></tr>
<tr><td colspan="3"></td><td><li>Network State: Not connected</li>
</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=smgw100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">LGW </th>
<th> SEALAG, S5210LOGGINGGATEWAY (S/N 192901df)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: smgw100, Physical ID: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>HW: 1.1, SW: 1.38</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=evse100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">EVSE </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: evse100, Physical ID: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: EVSE, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><li>State: A1 ( A1_UNPLUGGED )</li>
<li>Actual Current Limit: 12.0 A (Ic)</li>
<li>Loadsetter's Current Limit: 12.0 A (Icmax)</li>
<li>Max. Current Limit: 16.0 A (min (Idefault & Irated))</li>
<li>Rated Current: 32.0 A</li>
<li>Default Current: 16.0 A</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=io100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">General Purpose IO </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: io100, Physical ID: 4_1_5_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td><li>Value of Channel 0 : 0</li><li>Value of Channel 1 : 0</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter101" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter101, Physical ID: 4_1_1_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">no value</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=auth100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Card Reader </th>
<th> ABL, RFIDM60</th></tr>
<tr><td colspan="3"></td><td>Logical ID: auth100, Physical ID: 4_1_3_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: RFID, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V1.3</td></tr>
<tr><td colspan="3"></td><td><li>Last authentication by: 000000AEE274EB</li><li>Last type of authentication: ISO14443</li><li>Last time of authentication at: 2020/03/23 06:58:47</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> Gavazzi, EM340-DIN AV2 3 X S1 X (S/N 181294)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter100, Physical ID: 3_2_1_1, Parent device: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus RTU, Port: 2 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 341, SW: B 4</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> ENERGY_ACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">0.0</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">258.339</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">17.389</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">0.003</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">258.3</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">0.0</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> POWER_ACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> W</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> POWER_REACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> VAR</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">234.1</td><td> V</td><td>L1-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">231.9</td><td> V</td><td>L2-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">231.2</td><td> V</td><td>L3-N</td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
<tr><td> OPERATING_HOURS </td> <td style="text-align:right;">0.0</td><td> H</td><td></td><td style="text-align:center;" > 2020/03/24 18:13:25</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=breaker100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Breaker </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: breaker100, Physical ID: PB-0-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: RCCB</li><li>Maximum current: 0</li><li>Logical-ID Trigger Device: [meter100, evse100]</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=phro100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Phase Rotation </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: phro100, Physical ID: PHR-0-1</td></tr>
<tr><td colspan="3"></td><td>Phases will be mapped from 123N -> 123N
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit100, Physical ID: LIM-PL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit200" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit200, Physical ID: LIM-SL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
</table>



Devices indented under an EVSE are used by this EVSE.

</div>


<div id="footer">
Page loaded at: 2020/03/24 18:13:55 UTC acc. to operating system's time; This page reloads every 40 seconds.
<br/>
Copyright 2018 ABL,
<a href="http://www.abl.de">http://www.abl.de</a>,
<a href="mailto:info@abl.de">info@abl.de</a>
</div>

</body>

</html>

   httpheader HTTP/1.1 200 OK
Content-type: text/html
Content-length: 11313
Connection: close
Charset: UTF-8
Date: Tue, 24 Mar 2020 18:13:56 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 24
   hu_port    8300
   hu_portSfx :8300
   ignoreredirects 1
   loglevel   4
   path       /sys_diag.html
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.99.17:8300/sys_diag.html
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.99.17:8300/sys_diag.html
     value      0
   sslargs:
Attributes:
   enableControlSet 1
   enableCookies 1
   enforceGoodReadingNames 1
   handleRedirects 1
   room       AMAD
   showBody   1
   userattr   getHeader1 getHeader2 reading01Name reading01OExpr reading01Regex reading02Name reading02OExpr reading02Regex


Ich teste deinen Vorschlag direkt mal...

VG
Christian

Update:
Klappt wunderbar! YES!
Vielen Dank, Yersinia!
Ich versuche darüber das Thema besser zu verstehen...

Update 2:
Letzte Frage:
Ich hätte gerne noch aus:
<tr><td colspan="3"></td><td><li>State: A1 ( A1_UNPLUGGED )</li>
Das A1 in die Variable: Zustand
Als RegEx habe ich versucht: State: [\d\d]
Die Variable bleibt aber leer....ich schnalle es nicht.

Helft ihr mir nochmal weiter? Besten Dank!

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEm2005 am 27 März 2020, 20:10:51
Zitat von: frank am 27 März 2020, 12:14:28
vielleicht hilft das cookie attribut.

Ich habe bei HTTPMOD kein Attribut für Cookies gefunden  :(

Gruß Eberhard
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEm2005 am 27 März 2020, 20:31:49
Das attr hieß enableCookie. Ich hatte unter cookie gesucht.

GE
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FHEm2005 am 27 März 2020, 20:44:51
Erledigt. Hatte mein Hirn auf Durchzug. Sorry.
Gruß Eberhard
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 27 März 2020, 20:55:57
showBody

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 28 März 2020, 10:29:38
Zitat von: Chris8888 am 27 März 2020, 14:28:57
Update 2:
Letzte Frage:
Ich hätte gerne noch aus:
<tr><td colspan="3"></td><td><li>State: A1 ( A1_UNPLUGGED )</li>
Das A1 in die Variable: Zustand
Als RegEx habe ich versucht: State: [\d\d]
Die Variable bleibt aber leer....ich schnalle es nicht.

Helft ihr mir nochmal weiter? Besten Dank!
userattr um reading030Name reading030Regex ergänzen und dann dies hinzufügen:
attr DEVICE reading030Name Zustand
attr DEVICE reading030Regex <li>State:[\s]*([\w]+)

[\d\d] kann in diesem Fall nicht funktionieren, da es nach Ziffern sucht (in deinem Beisopiel sogar Zweistellig).

Du kannst auf regex101.com schauen, da gibt es rechts unten die häufig benutzten RegEx Ausdrücke. So probier' ich es auch durch. ;)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 28 März 2020, 17:52:38
Hi yersinia,

das klappt wieder perfekt! Klasse, vielen Dank!

Die Tests auf regex101.com klappen bei mir nicht. Aber der Tipp mit den Erklärungen unter rechts, der ist super! Danke!
Das hilft sehr beim verstehen.

Ich habe schon eine weitere Variable selbst hinbekommen.   ;)

Besten Dank nochmal!

VG
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 29 März 2020, 13:47:38
Hallo,
jetzt muss ich doch nochmal eine Frage loswerden.

Der Zugriff per HTTPMOD auf meine Wallbox klappt dank eurere Hilfe nun super.
Leider erzeut jeder Abruf einen Logeintrag in meiner Box:
2020-03-29 11:41:18,983 ERROR y.fr [Thread-5] Not supported device type: SMART_METER_GATEWAY

Hat jemand eine Idee warum das passiert? Muss ich den Aufruf verändern?

Hier mal das List des Devices:
Internals:
   BUSY       0
   CFGFN     
   CHANGED   
   DEF        http://192.168.99.17:8300/sys_diag.html 90
   FUUID      5e78fa86-f33f-a241-32da-0f3fe36afa67be9d
   Interval   90
   LASTSEND   1585482359.0507
   MainURL    http://192.168.99.17:8300/sys_diag.html
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       wallbox
   NOTIFYDEV  global
   NR         80994
   NTFY_ORDER 50-wallbox
   STATE      B2 / 0 kW /Jahr: 282.7 kWH
   TRIGGERTIME 1585482449.04768
   TRIGGERTIME_FMT 2020-03-29 13:47:29
   TYPE       HTTPMOD
   addr       http://192.168.99.17:8300
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.99.17:8300/sys_diag.html
   header     
   host       192.168.99.17
   httpbody   <html>

<head>

  <title>ABL3W226002111 - CPA Diagnosis</title> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="refresh" content="40; URL=/sys_diag.html">
  <link rel="stylesheet" type="text/css" media="screen" href="/format.css" />

  <link rel="icon" type="image/png" href="/html/icons/favicon-16x16.png">
</head>

<body>


<div id="header">
  <img src="/html/icons/abls-logo.png" style="height: 40px; float: left;">
  <h1 style="float:left; text-align:center; line-height:53px; width:70%">Charge Point Administration</h1>
 
  <form action="lang_sel.html" method="GET"><select name="lang"><option selected="selected" value="en" />en&nbsp;</option>
<option value="de" />de&nbsp;</option>
<option value="ru" />ru&nbsp;</option>
</select><input type="submit" value="choose" /></form>
 
</div>

<ul id="liste" style="clear:left;">

    <li id=""><a href="/index.html">Overview</a></li>
    <li id=""><a href="/bc_show.html">Configuration</a></li>
    <li id=""><a href="/dc_show.html">Devices</a></li>
    <li id=""><a href="/pc_show.html">Products</a></li>
   
   
    <li id=""><a href="/ca_show.html">Certificates</a></li>

    <li id="ChoosenTab"><a href="/sys_diag.html">Diagnosis</a></li>
    <li id=""><a href="/show_log.html">Logs</a></li>

    <!-- <li id=""><a href="/ev_log.html">EV Log</a></li> -->
    <li id=""><a href="/sys_care.html">Maintenance</a></li>
     
    <!--  <li id=""><a href="/about.html">About</a></li> -->
   
    <!-- <li><a href="/loginout.html">Log Out</a></li> -->
</ul>

<div id="inhalt">



<h2>List of Devices</h2>

<table id="sys_diag">
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=host100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">Host </th>
<th> ABL, SBC-II (S/N 808829102298)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: host100, Physical ID: 0_0_0_0</td></tr>
<tr><td colspan="3"></td><td>HW: D, SW: 1.6p1, OS: 1.6p1</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=nad100" ><img src="/html/icons/status_nok.png" title="MISCONFIGURED" /></a></th>
<th colspan="2" class="second_column">Network Device </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: nad100, Physical ID: ppp0</td></tr>
<tr><td colspan="3"></td><td><li>Network State: Not connected</li>
</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=smgw100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">LGW </th>
<th> SEALAG, S5210LOGGINGGATEWAY (S/N 192901df)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: smgw100, Physical ID: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>HW: 1.1, SW: 1.38</td></tr>
<tr><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=evse100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">EVSE </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: evse100, Physical ID: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: EVSE, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><li>State: B2 ( null )</li>
<li>Actual Current Limit: 12.0 A (Ic)</li>
<li>Loadsetter's Current Limit: 12.0 A (Icmax)</li>
<li>Max. Current Limit: 16.0 A (min (Idefault & Irated))</li>
<li>Rated Current: 32.0 A</li>
<li>Default Current: 16.0 A</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=io100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">General Purpose IO </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: io100, Physical ID: 4_1_5_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td><li>Value of Channel 0 : 0</li><li>Value of Channel 1 : 0</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter101" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter101, Physical ID: 4_1_1_1, Parent device: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.1</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.1</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.1</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=auth100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Card Reader </th>
<th> ABL, RFIDM60</th></tr>
<tr><td colspan="3"></td><td>Logical ID: auth100, Physical ID: 4_1_3_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: RFID, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V1.3</td></tr>
<tr><td colspan="3"></td><td><li>Last authentication by: 000000AEE274EB</li><li>Last type of authentication: ISO14443</li><li>Last time of authentication at: 2020/03/28 19:15:07</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=meter100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Meter </th>
<th> Gavazzi, EM340-DIN AV2 3 X S1 X (S/N 181294)</th></tr>
<tr><td colspan="3"></td><td>Logical ID: meter100, Physical ID: 3_2_1_1, Parent device: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus RTU, Port: 2 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 341, SW: B 4</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Value</th><th>Unit</th><th>Description</th><th>Timestamp</th></tr><tr><td> ENERGY_ACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">0.0</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">282.778</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/29 11:45:31</td></tr>
<tr><td> ENERGY_REACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">19.174</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">0.003</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">282.7</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">0.0</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> POWER_ACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> W</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> POWER_REACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> VAR</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">228.7</td><td> V</td><td>L1-N</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">230.1</td><td> V</td><td>L2-N</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">230.3</td><td> V</td><td>L3-N</td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
<tr><td> OPERATING_HOURS </td> <td style="text-align:right;">0.0</td><td> H</td><td></td><td style="text-align:center;" > 2020/03/29 11:44:26</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=breaker100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Breaker </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: breaker100, Physical ID: PB-0-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: RCCB</li><li>Maximum current: 0</li><li>Logical-ID Trigger Device: [meter100, evse100]</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=phro100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Phase Rotation </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: phro100, Physical ID: PHR-0-1</td></tr>
<tr><td colspan="3"></td><td>Phases will be mapped from 123N -> 123N
</td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit100, Physical ID: LIM-PL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
<tr><td></td><th class="first_column"><a title="See real-time diagnosis of this device" href="/dev_diag.html?logical_id=limit200" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Limit </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logical ID: limit200, Physical ID: LIM-SL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
</table>



Devices indented under an EVSE are used by this EVSE.

</div>


<div id="footer">
Page loaded at: 2020/03/29 11:45:48 UTC acc. to operating system's time; This page reloads every 40 seconds.
<br/>
Copyright 2018 ABL,
<a href="http://www.abl.de">http://www.abl.de</a>,
<a href="mailto:info@abl.de">info@abl.de</a>
</div>

</body>

</html>

   httpheader HTTP/1.1 200 OK
Content-type: text/html
Content-length: 11290
Connection: close
Charset: UTF-8
Date: Sun, 29 Mar 2020 11:45:49 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 52
   hu_port    8300
   hu_portSfx :8300
   ignoreredirects 1
   loglevel   4
   path       /sys_diag.html
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.99.17:8300/sys_diag.html
   value      0
   CompiledRegexes:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2020-03-29 13:45:59   JahresverbrauchEuro 27€
     2020-03-29 13:45:59   JahresverbrauchKw 201 kWH
     2020-03-29 13:45:59   Ladestrom-akt   0
     2020-03-29 13:45:59   Ladestrom-aktWatt 0.0
     2020-03-29 13:45:59   LeistungP1      0.1
     2020-03-29 13:45:59   Status          Fertig
     2020-03-29 13:45:59   Verbrauch       282.7
     2020-03-29 13:45:59   Zustand         B2
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.99.17:8300/sys_diag.html
     value      0
   defptr:
     readingBase:
       Ladestrom-akt reading
       Ladestrom-aktWatt reading
       Leistung   reading
       LeistungP1 reading
       Verbrauch  reading
       Zustand    reading
       reading010 reading
     readingNum:
       Ladestrom-akt 04
       Ladestrom-aktWatt 04
       Leistung   020
       LeistungP1 02
       Verbrauch  01
       Zustand    03
       reading010 010
     readingOutdated:
     requestReadings:
       update:
         Ladestrom-akt reading 04
         Ladestrom-aktWatt reading 04
         Leistung   reading 020
         LeistungP1 reading 02
         Verbrauch  reading 01
         Zustand    reading 03
         reading010 reading 010
   sslargs:
Attributes:
   comment    81 in Usereading Jahresverbrauch manuel eintragen
   enableControlSet 1
   enableCookies 1
   enforceGoodReadingNames 1
   event-on-change-reading .*
   handleRedirects 1
   reading01Expr $val =~ s/,/\./;; $val;;
   reading01Name Verbrauch
   reading01Regex ENERGY_ACTIVE_IMPORT_INTERVAL[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   reading02Expr $val =~ s/,/\./;; $val;;
   reading02Name LeistungP1
   reading02Regex CURRENT_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   reading03Expr $val =~ s/,/\./;; $val;;
   reading03Name Zustand
   reading03Regex <li>State:[\s]*([\w]+)
   reading04Expr $val =~ s/,/\./;; $val;;
   reading04Name Ladestrom-aktWatt
   reading04Regex POWER_ACTIVE_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   room       AMAD
   showBody   1
   stateFormat Zustand / Ladestrom-akt kW /Jahr: Verbrauch kWH
   userReadings JahresverbrauchKw {int(ReadingsNum("wallbox","Verbrauch",0,0))-81 ." kWH"},JahresverbrauchEuro {int(ReadingsNum("wallbox","Verbrauch",0,0))-81*0,27 ."€"}, Status {if(ReadingsVal("wallbox","Zustand","") eq "A1") {return "Frei"} elsif (ReadingsVal("wallbox","Zustand","") eq "B2") {return "Fertig"} elsif (ReadingsVal("wallbox","Zustand","") eq "C2") {return "Lädt"} else {return "Fehler"}},
Ladestrom-akt {int(ReadingsNum("wallbox","Ladestrom-aktWatt",0,1))/1000}


   userattr   reading01Expr reading01Name reading01Regex reading02Expr reading02Name reading02Regex reading03Expr reading03Name reading03Regex reading04Expr reading04Name reading04Regex


Danke vorab!

Viele Grüße
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 März 2020, 15:37:12
Bist Du sicher, dass es mit HTTPMOD zu tun hat? Was hast Du für Devices, die die Daten vom HTTPMOD benutzen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 29 März 2020, 16:15:16
Gamnz sicher. Die Zeitstempel im Log kommen alle 90 Sek. Genau wie die Abfrage vom HTTPMOD.
Schalte ich das aus, kommen auch keine Einträge mehr.

Wenn ich mit dem normalen Browser zugreife entstehen keine Einträge.

VG
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 29 März 2020, 16:25:14
ist "y.fr" in der error msg eventuell ein hinweis auf eine französische url, um "zuhause" zu petzen?

du kannst versuchen den header, den der browser sendet, in httpmod nach zu bauen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 März 2020, 17:11:11
Das ist aber doch unabhängig von FHEM, weil man es z.B. hier auch finden kann: https://www.gitmemory.com/issue/RWTH-i5-IDSG/steve/291/583846197

Wenn HTTPMOD sich das Ding holt, solltest Du y.fr in der Log von Fhem finden, wenn verbose 5 auf dem HTTPMOD.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 29 März 2020, 17:26:26
ZitatDas ist aber doch unabhängig von FHEM, weil man es z.B. hier auch finden kann
nicht ganz.

der request von fhem wird zwar beantwortet, aber gleichzeitig die error msg in der wallbox gelogt.
da das über browser nicht passiert, vermute ich als ursache fehlende headerzeilen.

letztendlich wohl nur ein "schönheitsfehler".
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 29 März 2020, 17:45:53
Zitat von: frank am 29 März 2020, 16:25:14
ist "y.fr" in der error msg eventuell ein hinweis auf eine französische url, um "zuhause" zu petzen?

du kannst versuchen den header, den der browser sendet, in httpmod nach zu bauen.

Wie kann ich das machen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 29 März 2020, 18:16:33
hier erstmal nur als muster ein beispiel mit 2 header zeilen aus der cref.

attr PM requestHeader1 Content-Type: application/json
attr PM requestHeader2 Accept: */*


als erstes musst du den header des browser requests ermitteln.
bei firefox zb über die webtools, zb konsole, im menü extras.
im sich öffnenden konsolenfenster gibt es dann einen reiter netzwerk/http oder so ähnlich.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 30 März 2020, 11:09:51
Hi Frank,

ich habe folgende Attr ergänzt:

requestHeader1 Content-Type: text/html
requestHeader2 Accept: */*


Die Einträge im Log bleiben leider...

VG
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 30 März 2020, 11:15:59
habe ich mich so schlecht ausgedrückt,
oder ist das der komplette header den dein browser sendet?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 30 März 2020, 17:59:18
Hi,
m.E. schon....siehe Screenshot anbei.
Oder bin ich da falsch?

VG
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 30 März 2020, 18:17:21
etwas tiefer.
siehe unter "anfragekopfzeilen 402 b"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 31 März 2020, 14:27:04
Und was nehme ich davon? Sorry für die vielen Fragen.....
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 31 März 2020, 15:06:18
wenn du alles nimmst, sollte es wohl funktionieren, wenn es keine negativen auswirkungen auf die bisherige antwort hat.

ich würde mit user-agent anfangen und dann immer eine headerzeile hinzufügen, bis es ok ist.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 01 April 2020, 07:52:15
Ich mach es immer andersherum.
In Burp mitlesen und die ganzen Kommunikationsblöcke dann simulieren .
Anschließend teile des Headers ausdünnen  um den Ballast los zu werden.

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 01 April 2020, 12:07:58
Hi,
ich habe jetzt den kompletten Header ergänzt:

Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1


Leider bleiben die Einträge. Kann es vielleicht auch etwas mit Zertifikaten zu tun haben?

Ich bin für jede Idee dankbar.

VG
Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 01 April 2020, 17:26:15
oben hattest du aber 10 headerzeilen gezeigt, nicht 8.
zeig mal ein aktuelles list.
schon mal verbose erhöht und im log geschaut?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 01 April 2020, 20:14:05
Hi,
im FHEM-Log sieht alles gut aus, Verbose 5:
2020.04.01 20:07:45 5: wallbox: set called with reread
2020.04.01 20:07:45 5: wallbox: GetUpdate called (reread)
2020.04.01 20:07:45 5: wallbox: AddToQueue adds type update to URL http://192.168.99.17:8300/sys_diag.html, no data, header Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1, retry 0, initial queue len: 0
2020.04.01 20:07:45 5: wallbox: HandleSendQueue called, qlen = 1
2020.04.01 20:07:45 4: wallbox: HandleSendQueue sends update with timeout 2 to http://192.168.99.17:8300/sys_diag.html, No Data,
header: Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1
2020.04.01 20:07:45 5: HttpUtils url=http://192.168.99.17:8300/sys_diag.html
2020.04.01 20:07:45 4: IP: 192.168.99.17 -> 192.168.99.17
2020.04.01 20:07:45 5: HttpUtils request header:
GET /sys_diag.html HTTP/1.0
Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1

2020.04.01 20:07:45 4: http://192.168.99.17:8300/sys_diag.html: HTTP response code 200
2020.04.01 20:07:45 5: HttpUtils http://192.168.99.17:8300/sys_diag.html: Got data, length: 11491
2020.04.01 20:07:45 5: HttpUtils response header:
HTTP/1.1 200 OK
Content-type: text/html
Content-length: 11491
Connection: close
Charset: UTF-8
Date: Wed, 01 Apr 2020 18:07:32 GMT
2020.04.01 20:07:45 4: wallbox: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Content-type: text/html
Content-length: 11491
Connection: close
Charset: UTF-8
Date: Wed, 01 Apr 2020 18:07:32 GMT, body length 11491
2020.04.01 20:07:45 5: wallbox: Read callback: body
<html>

<head>

  <title>ABL3W226002111 - CPA Diagnose</title> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="refresh" content="40; URL=/sys_diag.html">
  <link rel="stylesheet" type="text/css" media="screen" href="/format.css" />

  <link rel="icon" type="image/png" href="/html/icons/favicon-16x16.png">
</head>

<body>


<div id="header">
  <img src="/html/icons/abls-logo.png" style="height: 40px; float: left;">
  <h1 style="float:left; text-align:center; line-height:53px; width:70%">Charge Point Administration</h1>
 
  <form action="lang_sel.html" method="GET"><select name="lang"><option value="en" />en </option>
<option selected="selected" value="de" />de </option>
<option value="ru" />ru </option>
</select><input type="submit" value="auswählen" /></form>
 
</div>

<ul id="liste" style="clear:left;">

    <li id=""><a href="/index.html">Übersicht</a></li>
    <li id=""><a href="/bc_show.html">Konfiguration</a></li>
    <li id=""><a href="/dc_show.html">Geräte</a></li>
    <li id=""><a href="/pc_show.html">Produkte</a></li>
   
   
    <li id=""><a href="/ca_show.html">Zertifikate</a></li>

    <li id="ChoosenTab"><a href="/sys_diag.html">Diagnose</a></li>
    <li id=""><a href="/show_log.html">Logs</a></li>

    <!-- <li id=""><a href="/ev_log.html">EV Log</a></li> -->
    <li id=""><a href="/sys_care.html">Wartung</a></li>
     
    <!--  <li id=""><a href="/about.html">Über uns</a></li> -->
   
    <!-- <li><a href="/loginout.html">LogOut</a></li> -->
</ul>

<div id="inhalt">



<h2>Liste der Geräte</h2>

<table id="sys_diag">
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=host100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">Host </th>
<th> ABL, SBC-II (S/N 808829102298)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: host100, Physikalische ID: 0_0_0_0</td></tr>
<tr><td colspan="3"></td><td>HW: D, SW: 1.6p1, OS: 1.6p1</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=nad100" ><img src="/html/icons/status_nok.png" title="MISCONFIGURED" /></a></th>
<th colspan="2" class="second_column">Netzwerk </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: nad100, Physikalische ID: ppp0</td></tr>
<tr><td colspan="3"></td><td><li>Netzwerkzustand: Nicht verbunden</li>
</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=smgw100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">LGW </th>
<th> SEALAG, S5210LOGGINGGATEWAY (S/N 192901df)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: smgw100, Physikalische ID: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>HW: 1.1, SW: 1.38</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=evse100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">EVSE </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: evse100, Physikalische ID: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: EVSE, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><li>Zustand: A1 ( A1_UNPLUGGED )</li>
<li>Aktueller Grenzstrom: 12.0 A (Ic)</li>
<li>Laststeller Grenzstrom: 12.0 A (Icmax)</li>
<li>Maximaler Grenzstrom: 16.0 A (min (Idefault & Irated))</li>
<li>Auslegestrom : 32.0 A</li>
<li>Nominalstrom: 16.0 A</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=io100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Allgemeines IO </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: io100, Physikalische ID: 4_1_5_1, Elterngeraet: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td><li>Wert von Kanal 0 : 0</li><li>Wert von Kanal 1 : 0</li></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=meter101" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Zähler </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: meter101, Physikalische ID: 4_1_1_1, Elterngeraet: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Wert</th><th>Einheit</th><th>Beschreibung</th><th>Zeitstempel</th></tr><tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=auth100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Kartenleser </th>
<th> ABL, RFIDM60</th></tr>
<tr><td colspan="3"></td><td>Logische ID: auth100, Physikalische ID: 4_1_3_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: RFID, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V1.3</td></tr>
<tr><td colspan="3"></td><td><li>Letzte Authenifizierung durch: 000000AEE274EB</li><li>Typ der Authentifizierung: ISO14443</li><li>Zeit der Authentifizierung: 2020/03/28 19:15:07</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=meter100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Zähler </th>
<th> Gavazzi, EM340-DIN AV2 3 X S1 X (S/N 181294)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: meter100, Physikalische ID: 3_2_1_1, Elterngeraet: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus RTU, Port: 2 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 341, SW: B 4</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Wert</th><th>Einheit</th><th>Beschreibung</th><th>Zeitstempel</th></tr><tr><td> ENERGY_ACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">0.0</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">282.778</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> ENERGY_REACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">19.174</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">0.003</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">282.7</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">0.0</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> POWER_ACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> W</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> POWER_REACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> VAR</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">235.6</td><td> V</td><td>L1-N</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">235.2</td><td> V</td><td>L2-N</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">234.5</td><td> V</td><td>L3-N</td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
<tr><td> OPERATING_HOURS </td> <td style="text-align:right;">0.0</td><td> H</td><td></td><td style="text-align:center;" > 2020/04/01 18:05:47</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=breaker100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Sicherung </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: breaker100, Physikalische ID: PB-0-1</td></tr>
<tr><td colspan="3"></td><td><li>Typ: RCCB</li><li>maximaler Belastungsstrom : 0</li><li>Logical-ID Trigger-Geraet: [meter100, evse100]</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=phro100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Phasenrotation </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: phro100, Physikalische ID: PHR-0-1</td></tr>
<tr><td colspan="3"></td><td>Phases will be mapped from 123N -> 123N
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=limit100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Begrenzer </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: limit100, Physikalische ID: LIM-PL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=limit200" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Begrenzer </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: limit200, Physikalische ID: LIM-SL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
</table>



Eingerückte Geräte unter einem EVSE werden von dem betreffenden EVSE benutzt.

</div>


<div id="footer">
Seite geladen am: 2020/04/01 18:07:32 UTC gemäß Betriebssystemzeit; Diese Seite laedt sich jede 40 Sekunden neu.
<br/>
Copyright 2018 ABL,
<a href="http://www.abl.de">http://www.abl.de</a>,
<a href="mailto:info@abl.de">info@abl.de</a>
</div>

</body>

</html>

2020.04.01 20:07:45 4: wallbox: Read found no charset header (bodyDecode was set to auto)
2020.04.01 20:07:45 5: wallbox: GetCookies is looking for Cookies
2020.04.01 20:07:45 5: wallbox: ExtractSid called, context reading, num
2020.04.01 20:07:45 4: wallbox: checking for redirects, code=200, ignore=0
2020.04.01 20:07:45 4: wallbox: no redirects to handle
2020.04.01 20:07:45 5: wallbox: CheckAuth decided no authentication required
2020.04.01 20:07:45 5: wallbox: Read starts parsing response to update with defined readings: 01,02,03,04
2020.04.01 20:07:45 5: wallbox: GetRegex found precompiled Regex for reading01 as (?^u:ENERGY_ACTIVE_IMPORT_INTERVAL[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))
2020.04.01 20:07:45 5: wallbox: ExtractReading Verbrauch with regex /(?^u:ENERGY_ACTIVE_IMPORT_INTERVAL[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))/...
2020.04.01 20:07:45 5: wallbox: 1 matches, matchlist = 282.7
2020.04.01 20:07:45 5: wallbox: FormatReading changed value with Expr $val =~ s/,/\./;; $val;; from 282.7 to 282.7
2020.04.01 20:07:45 5: wallbox: ExtractReading for reading01-1 sets Verbrauch to 282.7
2020.04.01 20:07:45 5: wallbox: GetRegex found precompiled Regex for reading02 as (?^u:CURRENT_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))
2020.04.01 20:07:45 5: wallbox: ExtractReading LeistungP1 with regex /(?^u:CURRENT_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))/...
2020.04.01 20:07:45 5: wallbox: 1 matches, matchlist = 0.0
2020.04.01 20:07:45 5: wallbox: FormatReading changed value with Expr $val =~ s/,/\./;; $val;; from 0.0 to 0.0
2020.04.01 20:07:45 5: wallbox: ExtractReading for reading02-1 sets LeistungP1 to 0.0
2020.04.01 20:07:45 5: wallbox: GetRegex found precompiled Regex for reading03 as (?^u:<li>State:[\s]*([\w]+))
2020.04.01 20:07:45 5: wallbox: ExtractReading Zustand with regex /(?^u:<li>State:[\s]*([\w]+))/...
2020.04.01 20:07:45 5: wallbox: ExtractReading Zustand did not match
2020.04.01 20:07:45 5: wallbox: GetRegex found precompiled Regex for reading04 as (?^u:POWER_ACTIVE_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))
2020.04.01 20:07:45 5: wallbox: ExtractReading Ladestrom-aktWatt with regex /(?^u:POWER_ACTIVE_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d]))/...
2020.04.01 20:07:45 5: wallbox: 1 matches, matchlist = 0.0
2020.04.01 20:07:45 5: wallbox: FormatReading changed value with Expr $val =~ s/,/\./;; $val;; from 0.0 to 0.0
2020.04.01 20:07:45 5: wallbox: ExtractReading for reading04-1 sets Ladestrom-aktWatt to 0.0
2020.04.01 20:07:45 4: wallbox: Read response matched 3, unmatch 1 Reading(s)
2020.04.01 20:07:45 5: wallbox: Read response to update matched Verbrauch LeistungP1 Ladestrom-aktWatt
2020.04.01 20:07:45 5: wallbox: Read response to update did not match Zustand
2020.04.01 20:07:45 5: wallbox: HandleSendQueue called, qlen = 0


ein List:

Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.99.17:8300/sys_diag.html 90
   FUUID      5e78fa86-f33f-a241-32da-0f3fe36afa67be9d
   Interval   90
   LASTSEND   1585764621.06329
   MainURL    http://192.168.99.17:8300/sys_diag.html
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       wallbox
   NOTIFYDEV  global
   NR         771
   NTFY_ORDER 50-wallbox
   STATE      A1 / 0 kW /Jahr: 282.7 kWH
   TRIGGERTIME 1585764711.05788
   TRIGGERTIME_FMT 2020-04-01 20:11:51
   TYPE       HTTPMOD
   addr       http://192.168.99.17:8300
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.99.17:8300/sys_diag.html
   header     Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1
   host       192.168.99.17
   httpbody   <html>

<head>

  <title>ABL3W226002111 - CPA Diagnose</title> 

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  <meta http-equiv="expires" content="0" />
  <meta http-equiv="refresh" content="40; URL=/sys_diag.html">
  <link rel="stylesheet" type="text/css" media="screen" href="/format.css" />

  <link rel="icon" type="image/png" href="/html/icons/favicon-16x16.png">
</head>

<body>


<div id="header">
  <img src="/html/icons/abls-logo.png" style="height: 40px; float: left;">
  <h1 style="float:left; text-align:center; line-height:53px; width:70%">Charge Point Administration</h1>
 
  <form action="lang_sel.html" method="GET"><select name="lang"><option value="en" />en&nbsp;</option>
<option selected="selected" value="de" />de&nbsp;</option>
<option value="ru" />ru&nbsp;</option>
</select><input type="submit" value="auswählen" /></form>
 
</div>

<ul id="liste" style="clear:left;">

    <li id=""><a href="/index.html">Übersicht</a></li>
    <li id=""><a href="/bc_show.html">Konfiguration</a></li>
    <li id=""><a href="/dc_show.html">Geräte</a></li>
    <li id=""><a href="/pc_show.html">Produkte</a></li>
   
   
    <li id=""><a href="/ca_show.html">Zertifikate</a></li>

    <li id="ChoosenTab"><a href="/sys_diag.html">Diagnose</a></li>
    <li id=""><a href="/show_log.html">Logs</a></li>

    <!-- <li id=""><a href="/ev_log.html">EV Log</a></li> -->
    <li id=""><a href="/sys_care.html">Wartung</a></li>
     
    <!--  <li id=""><a href="/about.html">Über uns</a></li> -->
   
    <!-- <li><a href="/loginout.html">LogOut</a></li> -->
</ul>

<div id="inhalt">



<h2>Liste der Geräte</h2>

<table id="sys_diag">
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=host100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">Host </th>
<th> ABL, SBC-II (S/N 808829102298)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: host100, Physikalische ID: 0_0_0_0</td></tr>
<tr><td colspan="3"></td><td>HW: D, SW: 1.6p1, OS: 1.6p1</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=nad100" ><img src="/html/icons/status_nok.png" title="MISCONFIGURED" /></a></th>
<th colspan="2" class="second_column">Netzwerk </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: nad100, Physikalische ID: ppp0</td></tr>
<tr><td colspan="3"></td><td><li>Netzwerkzustand: Nicht verbunden</li>
</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=smgw100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">LGW </th>
<th> SEALAG, S5210LOGGINGGATEWAY (S/N 192901df)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: smgw100, Physikalische ID: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>HW: 1.1, SW: 1.38</td></tr>
<tr><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=evse100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th colspan="2" class="second_column">EVSE </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: evse100, Physikalische ID: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: EVSE, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><li>Zustand: A1 ( A1_UNPLUGGED )</li>
<li>Aktueller Grenzstrom: 12.0 A (Ic)</li>
<li>Laststeller Grenzstrom: 12.0 A (Icmax)</li>
<li>Maximaler Grenzstrom: 16.0 A (min (Idefault & Irated))</li>
<li>Auslegestrom : 32.0 A</li>
<li>Nominalstrom: 16.0 A</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=io100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Allgemeines IO </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: io100, Physikalische ID: 4_1_5_1, Elterngeraet: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td><li>Wert von Kanal 0 : 0</li><li>Wert von Kanal 1 : 0</li></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=meter101" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Zähler </th>
<th> ABL, EVCC2-redesign</th></tr>
<tr><td colspan="3"></td><td>Logische ID: meter101, Physikalische ID: 4_1_1_1, Elterngeraet: 4_1_4_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V4.1</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Wert</th><th>Einheit</th><th>Beschreibung</th><th>Zeitstempel</th></tr><tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">kein Wert</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=auth100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Kartenleser </th>
<th> ABL, RFIDM60</th></tr>
<tr><td colspan="3"></td><td>Logische ID: auth100, Physikalische ID: 4_1_3_1</td></tr>
<tr><td colspan="3"></td><td>Device-Type: RFID, Bus-Type: Modbus ASCII, Port: 1 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 1.0, SW: V1.3</td></tr>
<tr><td colspan="3"></td><td><li>Letzte Authenifizierung durch: 000000AEE274EB</li><li>Typ der Authentifizierung: ISO14443</li><li>Zeit der Authentifizierung: 2020/03/28 19:15:07</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=meter100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Zähler </th>
<th> Gavazzi, EM340-DIN AV2 3 X S1 X (S/N 181294)</th></tr>
<tr><td colspan="3"></td><td>Logische ID: meter100, Physikalische ID: 3_2_1_1, Elterngeraet: 3_2_7_100</td></tr>
<tr><td colspan="3"></td><td>Device-Type: Meter, Bus-Type: Modbus RTU, Port: 2 , Id: 1</td></tr>
<tr><td colspan="3"></td><td>HW: 341, SW: B 4</td></tr>
<tr><td colspan="3"></td><td><table class="diag_meter_values"><tr><th>Measurand</th><th>Wert</th><th>Einheit</th><th>Beschreibung</th><th>Zeitstempel</th></tr><tr><td> ENERGY_ACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">0.0</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">282.778</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> ENERGY_REACTIVE_EXPORT_REGISTER </td> <td style="text-align:right;">19.174</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_REGISTER </td> <td style="text-align:right;">0.003</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> ENERGY_ACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">282.7</td><td> kWH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> ENERGY_REACTIVE_IMPORT_INTERVAL </td> <td style="text-align:right;">0.0</td><td> kVARH</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> POWER_ACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> W</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> POWER_REACTIVE_IMPORT </td> <td style="text-align:right;">0.0</td><td> VAR</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L1</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L2</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> CURRENT_IMPORT </td> <td style="text-align:right;">0.0</td><td> A</td><td>L3</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">235.5</td><td> V</td><td>L1-N</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">236.4</td><td> V</td><td>L2-N</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> VOLTAGE </td> <td style="text-align:right;">234.7</td><td> V</td><td>L3-N</td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
<tr><td> OPERATING_HOURS </td> <td style="text-align:right;">0.0</td><td> H</td><td></td><td style="text-align:center;" > 2020/04/01 18:08:47</td></tr>
</table></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=breaker100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Sicherung </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: breaker100, Physikalische ID: PB-0-1</td></tr>
<tr><td colspan="3"></td><td><li>Typ: RCCB</li><li>maximaler Belastungsstrom : 0</li><li>Logical-ID Trigger-Geraet: [meter100, evse100]</li>
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=phro100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Phasenrotation </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: phro100, Physikalische ID: PHR-0-1</td></tr>
<tr><td colspan="3"></td><td>Phases will be mapped from 123N -> 123N
</td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=limit100" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Begrenzer </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: limit100, Physikalische ID: LIM-PL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
<tr><td></td><th class="first_column"><a title="Echtzeit-Diagnose dieses Gerätes anzeigen" href="/dev_diag.html?logical_id=limit200" ><img src="/html/icons/status_ok.png" title="OK" /></a></th>
<th class="second_column">Begrenzer </th>
<th> </th></tr>
<tr><td colspan="3"></td><td>Logische ID: limit200, Physikalische ID: LIM-SL-1</td></tr>
<tr><td colspan="3"></td><td><li>Type: STATIC</li><li>Maximum Current: 16.0 A</li></td></tr>
</table>



Eingerückte Geräte unter einem EVSE werden von dem betreffenden EVSE benutzt.

</div>


<div id="footer">
Seite geladen am: 2020/04/01 18:10:08 UTC gemäß Betriebssystemzeit; Diese Seite laedt sich jede 40 Sekunden neu.
<br/>
Copyright 2018 ABL,
<a href="http://www.abl.de">http://www.abl.de</a>,
<a href="mailto:info@abl.de">info@abl.de</a>
</div>

</body>

</html>

   httpheader HTTP/1.1 200 OK
Content-type: text/html
Content-length: 11491
Connection: close
Charset: UTF-8
Date: Wed, 01 Apr 2020 18:10:08 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 424
   hu_port    8300
   hu_portSfx :8300
   ignoreredirects 1
   loglevel   4
   path       /sys_diag.html
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.99.17:8300/sys_diag.html
   value      0
   CompiledRegexes:
   QUEUE:
   READINGS:
     2020-04-01 20:10:21   JahresverbrauchEuro 54.27€
     2020-04-01 20:10:21   JahresverbrauchKw 201 kWH
     2020-04-01 20:10:21   Ladestrom-akt   0
     2020-04-01 20:10:21   Ladestrom-aktWatt 0.0
     2020-04-01 20:10:21   LeistungP1      0.0
     2020-04-01 20:10:21   Status          Frei
     2020-04-01 20:10:21   Verbrauch       282.7
     2020-04-01 11:56:48   Zustand         A1
   REQUEST:
     data       
     header     Accept-Encoding: gzip, deflate
Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Cache-Control: no-cache
Host: wallbox:8300
Pragma: no-cache
User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
Upgrade-Insecure-Requests: 1
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.99.17:8300/sys_diag.html
     value      0
   defptr:
     readingBase:
       Ladestrom-aktWatt reading
       LeistungP1 reading
       Verbrauch  reading
       Zustand    reading
     readingNum:
       Ladestrom-aktWatt 04
       LeistungP1 02
       Verbrauch  01
       Zustand    03
     readingOutdated:
     requestReadings:
       update:
         Ladestrom-aktWatt reading 04
         LeistungP1 reading 02
         Verbrauch  reading 01
         Zustand    reading 03
   sslargs:
Attributes:
   comment    81 in Usereading Jahresverbrauch manuel eintragen
   enableControlSet 1
   enableCookies 1
   enforceGoodReadingNames 1
   event-on-change-reading .*
   handleRedirects 1
   reading01Expr $val =~ s/,/\./;; $val;;
   reading01Name Verbrauch
   reading01Regex ENERGY_ACTIVE_IMPORT_INTERVAL[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   reading02Expr $val =~ s/,/\./;; $val;;
   reading02Name LeistungP1
   reading02Regex CURRENT_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   reading03Expr $val =~ s/,/\./;; $val;;
   reading03Name Zustand
   reading03Regex <li>State:[\s]*([\w]+)
   reading04Expr $val =~ s/,/\./;; $val;;
   reading04Name Ladestrom-aktWatt
   reading04Regex POWER_ACTIVE_IMPORT[\s]*<\/td>[\s]*<td style="text-align:right;">([\d]+[.][\d])
   regexDecode utf-8
   requestHeader1 Accept-Encoding: gzip, deflate
   requestHeader2 Accept: text/html,application/xhtml+xm...ml;q=0.9,image/webp,*/*;q=0.8
   requestHeader3 Accept-Language: de,en-US;q=0.7,en;q=0.3
   requestHeader4 Cache-Control: no-cache
   requestHeader5 Host: wallbox:8300
   requestHeader6 Pragma: no-cache
   requestHeader7 User-Agent: Mozilla/5.0 (Macintosh; Intel ...) Gecko/20100101 Firefox/74.0
   requestHeader8 Upgrade-Insecure-Requests: 1
   room       AMAD
   showBody   1
   stateFormat Zustand / Ladestrom-akt kW /Jahr: Verbrauch kWH
   userReadings JahresverbrauchKw {int(ReadingsNum("wallbox","Verbrauch",0,0))-81 ." kWH"},JahresverbrauchEuro {int((ReadingsNum("wallbox","Verbrauch",0,0))-81)*0.27 ."€"}, Status {if(ReadingsVal("wallbox","Zustand","") eq "A1") {return "Frei"} elsif (ReadingsVal("wallbox","Zustand","") eq "B2") {return "Fertig"} elsif (ReadingsVal("wallbox","Zustand","") eq "C2") {return "Lädt"} else {return "Fehler"}},
Ladestrom-akt {int(ReadingsNum("wallbox","Ladestrom-aktWatt",0,1))/1000}


   userattr   reading01Expr reading01Name reading01Regex reading02Expr reading02Name reading02Regex reading03Expr reading03Name reading03Regex reading04Expr reading04Name reading04Regex requestHeader1 requestHeader2 requestHeader3 requestHeader4 requestHeader5 requestHeader6 requestHeader7 requestHeader8 requestHeader9
   verbose    0


die beiden hasen ich weggelassen:
Referer und Connection: keep-alive

Danke für deine Hilfe!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 02 April 2020, 16:26:09
warum nicht alle?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Chris8888 am 04 April 2020, 16:09:03
ändert nix...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 07 April 2020, 22:53:19
Hallo,

ich habe eine Salz Elektrolyse Anlage die ich gerne über httpmod in fhem einbinden möchte. Das Auslesen der Werte klappt super, aber ich möchte auch gerne Werte ändern können. Leider stehe ich hier komplett auf dem Schlauch...

Der Screenshot zeigt den POST zum setzen eines Wertes, aber wenn ich das über fhem versuche passiert nicht so viel...

Bin für jede Hilfe dankbar,

Gruss Jan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 07 April 2020, 23:05:13
Zeig ein "list" von deinem HTTPMOD (ggf anonymisiert)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 08 April 2020, 09:31:35
Hallo hier das LIST vom Device:
Internals:
   BUSY       0
   DEF        http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440 10
   FUUID      5e8afb62-f33f-7f5e-1209-c21e29b1ec435c53
   Interval   10
   JSONEnabled 1
   LASTSEND   1586330927.61719
   LastAuthTry 2020-04-07 11:04:44
   MainURL    http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       NaturallySalt
   NOTIFYDEV  global
   NR         857
   NTFY_ORDER 50-NaturallySalt
   STATE      Temp: 20.7 °C PH: 4.1 Redox: 210
   TRIGGERTIME 1586330937.61512
   TRIGGERTIME_FMT 2020-04-08 09:28:57
   TYPE       HTTPMOD
   XPathEnabled 1
   addr       http://naturally-salt-poolaccess.de:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440
   header     Cookie: PHPSESSID=flkasdjfölasjdflkajsdl
   host       naturally-salt-poolaccess.de
   httpheader HTTP/1.1 200 OK
Date: Wed, 08 Apr 2020 07:28:47 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 297
Connection: close
Content-Type: application/json
   httpversion 1.0
   hu_blocking 0
   hu_filecount 6
   hu_port    80
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /de/pool/getmainvalues?id=7440
   protocol   http
   redirects  0
   timeout    2
   url        http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440
   value      0
   CompiledRegexes:
   HTTPCookieHash:
     PHPSESSID;/:
       Name       PHPSESSID
       Options    expires=Mon, 06-Jul-2020 09:04:46 GMT; path=/
       Path       /
       Value      1fc2t34v2jkavgt6aej9h95be7
   QUEUE:
   READINGS:
     2020-04-08 09:28:48   CD              0
     2020-04-08 09:28:48   CD1             5000
     2020-04-08 09:28:48   CDColor_class   red
     2020-04-08 09:28:48   CDColor_hex     #f52626
     2020-04-08 09:28:48   CD_status       OFF
     2020-04-08 09:28:48   CL              0.00
     2020-04-08 09:28:48   CL1             1.00
     2020-04-08 09:28:48   CLColor_class   red
     2020-04-08 09:28:48   CLColor_hex     #f52626
     2020-04-08 09:28:48   CL_status_current
     2020-04-08 09:28:48   CL_status_hidro FL2
     2020-04-08 09:28:48   CL_status_status
     2020-04-08 09:28:48   PH              4.1
     2020-04-08 09:28:48   PH_status_alarm
     2020-04-08 09:28:48   PH_status_color_class red
     2020-04-08 09:28:48   PH_status_color_hex #f52626
     2020-04-08 09:28:48   PH_status_hi_value 7.2
     2020-04-08 09:28:48   PH_status_status 0
     2020-04-08 09:28:48   PH_status_type  ACID
     2020-04-08 09:28:48   RX              210
     2020-04-08 09:28:48   RX1             700
     2020-04-08 09:28:48   RXColor_class   red
     2020-04-08 09:28:48   RXColor_hex     #f52626
     2020-04-08 09:28:48   RX_status_current 0%
     2020-04-08 09:28:48   RX_status_hidro FL1
     2020-04-08 09:28:48   RX_status_status
     2020-04-08 09:28:48   filtration_mode MAN
     2020-04-08 09:28:48   filtration_stat ON
     2020-04-08 09:28:48   filtration_time_remaining 0
     2020-04-08 09:28:48   lightStat_status_status OFF
     2020-04-08 09:28:48   lightStat_status_type AUTO
     2020-04-08 09:28:48   local_time      09:28
     2020-04-08 09:28:48   temp            20.7�C
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://naturally-salt-poolaccess.de/de/pool/getmainvalues?id=7440
     value      0
   defptr:
     readingBase:
       CD         reading
       CD1        reading
       CDColor_class reading
       CDColor_hex reading
       CD_status  reading
       CL         reading
       CL1        reading
       CLColor_class reading
       CLColor_hex reading
       CL_status_current reading
       CL_status_hidro reading
       CL_status_status reading
       PH         reading
       PH_status_alarm reading
       PH_status_color_class reading
       PH_status_color_hex reading
       PH_status_hi_value reading
       PH_status_status reading
       PH_status_type reading
       RX         reading
       RX1        reading
       RXColor_class reading
       RXColor_hex reading
       RX_status_current reading
       RX_status_hidro reading
       RX_status_status reading
       filtration_mode reading
       filtration_stat reading
       filtration_time_remaining reading
       lightStat_status_status reading
       lightStat_status_type reading
       local_time reading
       temp       reading
     readingNum:
       CD         123
       CD1        117
       CDColor_class 119
       CDColor_hex 131
       CD_status  130
       CL         102
       CL1        106
       CLColor_class 105
       CLColor_hex 110
       CL_status_current 113
       CL_status_hidro 101
       CL_status_status 126
       PH         109
       PH_status_alarm 122
       PH_status_color_class 121
       PH_status_color_hex 129
       PH_status_hi_value 103
       PH_status_status 128
       PH_status_type 111
       RX         116
       RX1        112
       RXColor_class 107
       RXColor_hex 104
       RX_status_current 100
       RX_status_hidro 114
       RX_status_status 127
       filtration_mode 132
       filtration_stat 125
       filtration_time_remaining 124
       lightStat_status_status 118
       lightStat_status_type 115
       local_time 120
       temp       108
     readingOutdated:
     requestReadings:
       update:
         CD         reading 123
         CD1        reading 117
         CDColor_class reading 119
         CDColor_hex reading 131
         CD_status  reading 130
         CL         reading 102
         CL1        reading 106
         CLColor_class reading 105
         CLColor_hex reading 110
         CL_status_current reading 113
         CL_status_hidro reading 101
         CL_status_status reading 126
         PH         reading 109
         PH_status_alarm reading 122
         PH_status_color_class reading 121
         PH_status_color_hex reading 129
         PH_status_hi_value reading 103
         PH_status_status reading 128
         PH_status_type reading 111
         RX         reading 116
         RX1        reading 112
         RXColor_class reading 107
         RXColor_hex reading 104
         RX_status_current reading 100
         RX_status_hidro reading 114
         RX_status_status reading 127
         filtration_mode reading 132
         filtration_stat reading 125
         filtration_time_remaining reading 124
         lightStat_status_status reading 118
         lightStat_status_type reading 115
         local_time reading 120
         temp       reading 108
   sslargs:
Attributes:
   DbLogExclude .*
   alias      NaturallySalt
   enableControlSet 1
   enableCookies 1
   enableXPath 1
   enforceGoodReadingNames 1
   extractAllJSON 1
   group      Pool
   handleRedirects 1
   icon       virtualbox-alt
   reAuthRegex id="pass"|data-validation-engine
   reading100JSON RX_status_current
   reading100Name RX_status_current
   reading101JSON CL_status_hidro
   reading101Name CL_status_hidro
   reading102JSON CL
   reading102Name CL
   reading103JSON PH_status_hi_value
   reading103Name PH_status_hi_value
   reading104JSON RXColor_hex
   reading104Name RXColor_hex
   reading105JSON CLColor_class
   reading105Name CLColor_class
   reading106JSON CL1
   reading106Name CL1
   reading107JSON RXColor_class
   reading107Name RXColor_class
   reading108JSON temp
   reading108Name temp
   reading109JSON PH
   reading109Name PH
   reading110JSON CLColor_hex
   reading110Name CLColor_hex
   reading111JSON PH_status_type
   reading111Name PH_status_type
   reading112JSON RX1
   reading112Name RX1
   reading113JSON CL_status_current
   reading113Name CL_status_current
   reading114JSON RX_status_hidro
   reading114Name RX_status_hidro
   reading115JSON lightStat_status_type
   reading115Name lightStat_status_type
   reading116JSON RX
   reading116Name RX
   reading117JSON CD1
   reading117Name CD1
   reading118JSON lightStat_status_status
   reading118Name lightStat_status_status
   reading119JSON CDColor_class
   reading119Name CDColor_class
   reading120JSON local_time
   reading120Name local_time
   reading121JSON PH_status_color_class
   reading121Name PH_status_color_class
   reading122JSON PH_status_alarm
   reading122Name PH_status_alarm
   reading123JSON CD
   reading123Name CD
   reading124JSON filtration_time_remaining
   reading124Name filtration_time_remaining
   reading125JSON filtration_stat
   reading125Name filtration_stat
   reading126JSON CL_status_status
   reading126Name CL_status_status
   reading127JSON RX_status_status
   reading127Name RX_status_status
   reading128JSON PH_status_status
   reading128Name PH_status_status
   reading129JSON PH_status_color_hex
   reading129Name PH_status_color_hex
   reading130JSON CD_status
   reading130Name CD_status
   reading131JSON CDColor_hex
   reading131Name CDColor_hex
   reading132JSON filtration_mode
   reading132Name filtration_mode
   room       00_Haus,11_Garten,35_Keller
   set01Data  {"type":0,"mode":$val,"vel":null}
   set01Hint  1,0
   set01Max   1
   set01Min   0
   set01Name  Filtration
   set01TextArg id=7440&data=%7B%22type%22%3A0%2C%22mode%22%3A$val%2C%22vel%22%3Anull%7D&int=%5B%5D&vel=%5B%5D
   set01URL   http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues?id=7440
   set02Hint  1,0
   set02Max   1
   set02Min   0
   set02Name  Licht
   set02URL   http://naturally-salt-poolaccess.de/de/pool/setlightvalues?id=7440
   set02XPath id=7440&type=0&status=$val&freq=86400&start=&end=
   sid01Data  user=email&pass=passw&remember_password=1&entrar=Eingabe
   sid01URL   http://naturally-salt-poolaccess.de/de/login/login
   stateFormat {sprintf("Temp: %.1f °C PH: %.1f Redox: %.0f", ReadingsNum($name,'temp',0),ReadingsNum($name,'PH',0),ReadingsNum($name,'RX',0))}
   userattr   reading100JSON reading100Name reading101JSON reading101Name reading102JSON reading102Name reading103JSON reading103Name reading104JSON reading104Name reading105JSON reading105Name reading106JSON reading106Name reading107JSON reading107Name reading108JSON reading108Name reading109JSON reading109Name reading110JSON reading110Name reading111JSON reading111Name reading112JSON reading112Name reading113JSON reading113Name reading114JSON reading114Name reading115JSON reading115Name reading116JSON reading116Name reading117JSON reading117Name reading118JSON reading118Name reading119JSON reading119Name reading120JSON reading120Name reading121JSON reading121Name reading122JSON reading122Name reading123JSON reading123Name reading124JSON reading124Name reading125JSON reading125Name reading126JSON reading126Name reading127JSON reading127Name reading128JSON reading128Name reading129JSON reading129Name reading130JSON reading130Name reading131JSON reading131Name reading132JSON reading132Name set01Data set01Hint set01JSON set01Max set01Min set01Name set01TextArg:0,1 set01URL set02Data set02Hint set02JSON set02Max set02Min set02Name set02URL set02XPath setHeader1 setHeader2 setHeader3 sid01Data sid01URL
   verbose    5
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 08 April 2020, 20:00:34
set01Data und set01TextArg nicht gleichzeitig => ich würde zuerst mit nur set01Data probieren
id=7440 brauchst Du ggf nicht in TextArg, da schon in der URL
Setze noch mindestenssetHeader1 Content-Type: application/x-wwww.... usw wie in deinem Bild
setHeader2 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)


Am besten im DEF das Interval auf 0 setzen, damit die gets uns nicht stören, dann bitte die Log mit verbose 5 (anonymisiert) nach einem set posten
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 09 April 2020, 12:14:08
Das steht im Log:

2020.04.09 12:07:58 5: NaturallySalt: set called with Filtration 1
2020.04.09 12:07:58 5: NaturallySalt: set found option Filtration in attribute set01Name
2020.04.09 12:07:58 5: NaturallySalt: set is checking value 1 against max 1
2020.04.09 12:07:58 4: NaturallySalt: set will now set Filtration -> 1
2020.04.09 12:07:58 5: NaturallySalt: AddToQueue adds type set01 to URL http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues, data {"type":0,"mode":$val,"vel":null}, header Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64), retry 0, initial queue len: 0
2020.04.09 12:07:58 5: NaturallySalt: HandleSendQueue called, qlen = 1
2020.04.09 12:07:58 5: NaturallySalt: HandleSendQueue is using Cookie PHPSESSID with path / and Value 1fc2t34v2jkavgt6aej9h95be7 (key PHPSESSID;/, destination path is /de/pool/setfiltrationvalues)
2020.04.09 12:07:58 5: NaturallySalt: HandleSendQueue is adding Cookie header: PHPSESSID=1fc2t34v2jkavgt6aej9h95be7
2020.04.09 12:07:58 4: NaturallySalt: HandleSendQueue sends set01 with timeout 2 to http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues,
data: {"type":0,"mode":1,"vel":null},
header: Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Cookie: PHPSESSID=1fc2t34v2jkavgt6aej9h95be7
2020.04.09 12:07:58 5: HttpUtils url=http://naturally-salt-poolaccess.de/de/pool/setfiltrationvalues
2020.04.09 12:07:58 4: IP: naturally-salt-poolaccess.de -> 37.187.41.197
2020.04.09 12:07:58 5: HttpUtils request header:
POST /de/pool/setfiltrationvalues HTTP/1.0
Host: naturally-salt-poolaccess.de
Accept-Encoding: gzip,deflate
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Cookie: PHPSESSID=1fc2t34v2jkavgt6aej9h95be7
Content-Length: 30

2020.04.09 12:08:00 3: NaturallySalt: Read callback: Error: read from http://naturally-salt-poolaccess.de:80 timed out
2020.04.09 12:08:00 4: NaturallySalt: Read callback: request type was set01 retry 0, no headers, no body
2020.04.09 12:08:00 5: NaturallySalt: Read callback: body empty
2020.04.09 12:08:00 4: NaturallySalt: Read found no charset header (bodyDecode was set to auto)
2020.04.09 12:08:00 5: NaturallySalt: GetCookies is looking for Cookies
2020.04.09 12:08:00 5: NaturallySalt: ExtractSid called, context set, num 01
2020.04.09 12:08:00 4: NaturallySalt: no header to look for redirects
2020.04.09 12:08:00 5: NaturallySalt: GetRegex found precompiled reAuthRegex for  as (?^:id="pass"|data-validation-engine)
2020.04.09 12:08:00 5: NaturallySalt: CheckAuth is checking buffer with ReAuthRegex (?^:id="pass"|data-validation-engine)
2020.04.09 12:08:00 5: NaturallySalt: CheckAuth decided no authentication required
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 09 April 2020, 12:20:56
Jetzt funktioniert es :

attr NaturallySalt set01Data id=7440&data=%7B%22type%22%3A0%2C%22mode%22%3A$val%2C%22vel%22%3Anull%7D&int=%5B%5D&vel=%5B%5D


Versuche es auch noch mit ein paar anderen Set-Werten

Wäre es interessant, wenn dann alles geht, das define für andere hier dann zu posten?

:-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 08 Mai 2020, 15:14:20
Hi Guys,

kurze Frage, wenn ich bei mir das Intervall auf einen Wert setze, dann springt es nach einiger Zeit oder restart von FHEM immer wieder auf 0 zurück... kennt ihr das Problem?
VG
René

PS: Restart von FHEM überlebt das gesetzte Intervall nicht

PSS: Hat sich erledigt... ich habe beim anlegen "none" und "0" mitgegeben weil ich keine spezielle URL habe. Dann überschreibt er aber auch immer das Intervall wieder, wenn man es per set setzt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 08 Mai 2020, 19:28:03
Hallo,

ich benötige beim Modul HTTPMOD Hilfe bei der Definition eines Regex.
Ich fokussiere mich mal auf das Wesentliche und komme gleich zur Frage.

Im Quelltext der Seite: https://www.clever-tanken.de/tankstelle_details/17099 (https://www.clever-tanken.de/tankstelle_details/17099) wird mit Reading reading01Regex nach folgendem Muster gesucht:
"price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
Den Ausdruck "price-type-name">Diesel</div> findet man im Quelltext und "current-price-1"> gefolgt von dem interessierendem Dieselpreis. Anschließend wird nach suffix-price-."> gesucht und zum 1. Ergebnis dazu addiert.
Dieser Regex funktioniert tadellos, also keine Klagen.

Anders sieht es hier aus. Auf der Seite: https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 (https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1) wird versucht mit folgendem Regex den Dow Jones auszulesen:
Jones</span>[\d\D]{700,900}class="quote">(\d+\.\d+\,\d+)
Das funktioniert aber gar nicht. Eigentlich steht der interessierende Wert eine Zeile unter dem 1. Suchfragment Jones</span>

Kann mir hier jemand helfen?
Viele Grüße
Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 08 Mai 2020, 23:13:35
Zitat von: Gisbert am 08 Mai 2020, 19:28:03
Eigentlich steht der interessierende Wert eine Zeile unter dem 1. Suchfragment Jones</span>
Dann musst Du wahrscheinlich den "s" Modifier benutzen. reading01Regopt oder
(?s)Jones</span>[\d\D]{700,900}class="quote">(\d+\.\d+\,\d+)
und auch evtl. die \n irgendwie noch matchen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 10:17:01
Hallo amenomade,

danke für den Gedankenanstoß, ich hab mit regex101.com getestet und kann das Problem jetzt näher eingrenzen.

Gematcht werden soll folgender Ausdruck, der Leerzeichen und einen nicht sichtbaren Zeilenumbruch enthält. Die back slash in <\span> und <br\> kann man durch einen Punkt (.) abfragen, ebenso das einzelne Leerzeichen zwischen span und class.

Was fehlt ist der nicht sichtbare Zeilenumbruch und die Leerzeichen - im Regex durch 3 ? ? ? dargestellt, für die ich noch keine Lösung habe.

Soll gematcht werden:
Jones</span><br/>
                <span class="quote">24.324,64

Regex:
Jones<.span><br.>???<span.class="quote">(\d+\.\d+\,\d+)

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Christoph Morrison am 09 Mai 2020, 12:15:11
Warum machst du es dir so schwer, das mit einem RE rauszupopeln, wenn du auch XPath nutzen kannst?


defmod general.test.tiefer_johannes HTTPMOD https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
attr general.test.tiefer_johannes userattr reading01Name reading01XPath
attr general.test.tiefer_johannes reading01Name dow_jones
attr general.test.tiefer_johannes reading01XPath //*[@id="content"]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[3]


ergibt:


   QUEUE:
   READINGS:
     2020-05-09 12:15:28   dow_jones       24.324,64
   REQUEST:
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Mai 2020, 12:17:41
ZitatWas fehlt ist der nicht sichtbare Zeilenumbruch und die Leerzeichen - im Regex durch 3 ? ? ? dargestellt, für die ich noch keine Lösung habe.
Es fehlt
\s*?

Performanter ist:
Jones.*?quote">(\d+\.\d+\,\d+)
Sonst ist ja XPath eine gute Alternative... wenn die gesamte Struktur der Seite XPath-konform ist.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 14:21:01
Hallo amenomade,
das funktioniert:
Jones<.span><br.>\s*?<span.class="quote">(\d+\.\d+\,\d+)
das funktioniert anscheinend auch:
Jones<.span><br.>\s*<span.class="quote">(\d+\.\d+\,\d+)
Das funktioniert (bei regex101.com) nicht:
Jones.*?quote">(\d+\.\d+\,\d+)

Hallo Christoph,
XPath schaue ich mir auch an, das ist für mich dann nochmals schwerer als Regex.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Christoph Morrison am 09 Mai 2020, 15:12:56
Zitat von: Gisbert am 09 Mai 2020, 14:21:01
XPath schaue ich mir auch an, das ist für mich dann nochmals schwerer als Regex.

Das sieht vielleicht so aus, aber tatsächlich ist es deutlich einfacher, einen XPath-Ausdruck zu bekommen der passt, als selbst eine RE zu bauen die passt. Alle modernen Browser bieten von Haus eine XPath-Unterstützung an oder zumindest gibt es für jeden Browser ein Plugin, mit dem du mit einem Kontext-Klick den XPath zu einem Element bekommst.

Eine passende Regex (https://regex101.com/r/iCd7vI/2/) könnte so aussehen (hat mich mehr Zeit gekostet als die XPath-Expression ;-)):


Jones[^0-9]+([0-9]+\.[0-9,]+)


Mein Device sieht jetzt so aus:


defmod general.test.tiefer_johannes HTTPMOD https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
attr general.test.tiefer_johannes userattr reading01Name reading01XPath reading02Name reading02Regex
attr general.test.tiefer_johannes reading01Name dow_jones_xpath
attr general.test.tiefer_johannes reading01XPath //*[@id="content"]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[3]
attr general.test.tiefer_johannes reading02Name dow_jones_re
attr general.test.tiefer_johannes reading02Regex Jones[^0-9]+([0-9]+\.[0-9,]+)


Und ergibt folgendes (Auszug):

   READINGS:
     2020-05-09 15:10:28   dow_jones_re    24.324,64
     2020-05-09 15:10:28   dow_jones_xpath 24.324,64
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 16:47:38
Hallo Christoph,

ich hab ein Addon mit XPath in Firefox installiert, dann musste man aber noch auf dem Fhem-Server (Debian) ein Paket (sudo apt-get install libhtml-treebuilder-xpath-perl) installieren, das angemeckert wurde.
Dannach war es sehr einfach, das ist vielleicht ein geiler Sch... 8)
So sieht es jetzt mit XPath aus:
defmod DowJones HTTPMOD https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 7200
attr DowJonesuserattr ... reading03Name reading03XPath reading04Name reading04XPath
...
attr DowJones reading03Name dow_jones_XPath
attr DowJones reading03XPath /html/body/div[2]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[3]
attr DowJones reading04Name dow_jones_perc_XPath
attr DowJones reading04XPath /html/body/div[2]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[4]

Auch die prozentuale Änderung lässt sich so erfassen.

Deine Definition sieht initial etwas anders aus: //*[@id="content"] ..., bei´m Firefox startet das Ganze mit /html/body/ ...
Was hat es damit auf sich?

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Christoph Morrison am 09 Mai 2020, 17:05:46
Zitat von: Gisbert am 09 Mai 2020, 16:47:38
Deine Definition sieht initial etwas anders aus: //*[@id="content"] ..., bei´m Firefox startet das Ganze mit /html/body/ ...
Was hat es damit auf sich?

Super dass du das probiert hast! Der Unterschied ist im Prinzip folgender, stell dir das als Baum vor, der beim Element /html beginnt. * sagt im Prinzip: Alles (wie bei RE) und in diesem Falle alles bis zu einem Element mit der ID content (@ wie @tttribut) - das ist dann die Wurzel des Baumes. Praktisch eine Abkürzung. XPath ist sehr mächtig und es lohnt sich imho, XPath und XML zu verstehen, gerade wenn man im Web arbeitet. Der Dritte im Bunde ist dann XSLT (https://de.wikipedia.org/wiki/XSL_Transformation) - damit kann man dann einen XPath-Ausdruck benutzen um eine XML-Quelle in etwas anderes zu transformieren.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 17:39:17
Hallo Christoph,

von Verstehen bin ich noch meilenweit entfernt, ich hab jetzt nur das brav ausgeführt, was du mir vorgegeben hast, und nur die kleinen Stolpersteine Firefox Addon und fehlendes Perl-Paket aus dem Weg geräumt.
Da ja offensichtlich die beiden Definitionen zum gleichen Ergebnis kommen, welche ist denn "besser" oder resourcenschonender oder gar schneller?
/html/body/div[2]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[3]
//*[@id="content"]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[3]


Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Mai 2020, 18:36:42
Zitat von: Gisbert am 09 Mai 2020, 14:21:01
Das funktioniert (bei regex101.com) nicht:
Jones.*?quote">(\d+\.\d+\,\d+)

Doch doch, aber wie schon erwähnt muss man in dem Fall den "s" Modifier nutzen.  Weil "." ohne "s" Modifier Zeilenumbrüche nicht matcht.
Also bei regex101 ganz rechts, statt/zu gm => s
In HttpMod RegOpt s
Oder "inline" in der Regex (?s)(?s)Jones.*?quote">(\d+\.\d+\,\d+)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 19:07:50
Hallo amenomade,

vielen Dank für deine Erklärung. Damit dürften meine Fragen ausgiebig diskutiert sein, und mein Toolkasten Regex und XPath füllt sich zusehend.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Mai 2020, 19:24:03
Bei XPath würde ich eher folgendes benutzen
//a[contains(., 'Jones')]/span[@class="quote"]
Somit bist Du m.M.n. weniger abhängig von der gesamte Stuktur der Webseite

Bedeutet : suche das "a" node, das "Jones" enthält, und nimm davon das "span" child mit class "quote"

Es wäre performanter und sicherer, statt contains(), span/text()="Dow Jones" zu benutzen aber leider ist es immer ein bisschen schwierig mit den HTML Entities wie &nbsp; umzugehen. Ich weiss nicht, was mit HTTPMOD funktionieren würde:
text()="Dow Jones" => mit "non-breakable space" (unter Windows mit Alt+0160 eingeben)
text()="Dow${nbsp}Jones"
text()="Dow&nbsp;Jones"
...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 20:24:24
Hallo amenomade,

die Optionen mit text() habe ich probiert, die laufen aber nicht bei mir.

Eine Abfrage, die mich interessiert, steht weiter unten auf der Homepage und betrifft den Euro Stoxx50; diese braucht eine andere Abfrage.
Der Seitenquelltext dazu sieht wie folgt aus:
<a class="scrtyshortlist" href="https://kurse.boerse.ard.de/ard/mobile/kurse_einzelkurs_uebersicht.htn?i=159194">
                <div class="row cf">
                  <span class="name">Euro&nbsp;Stoxx&nbsp;50</span>
                  <div class="right">
                    <span class="change pos">+0,95%</span>
                    <span class="quote">2.908,11 </span>
                  </div>
                </div>
                <div class="row cf">
                  <span class="wkn"></span>
                  <span class="date">08.05.2020 | 17:50</span>
                  <span class="change_abs pos">+27,51</span>
                </div>
              </a>

class ="quote" steht 3 Zeilen tiefer als Euro oder Stoxx, wonach gesucht werden kann.

Hast du dazu auch eine Idee?

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Mai 2020, 21:22:15
Natürlich habe ich eine Idee.
Aber wäre es nicht besser, wenn Du es selbst versuchst?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 09 Mai 2020, 21:53:39
Hallo amenomade,

Besser wäre das, wenn ich es selber könnte. Ich bin aber auf Beispiele im Wiki, Commandref und Forum angewiesen. Mit der Zeit wird mein Repertoire immer größer.

Hier habe ich nicht den blassesten Plan, wie ich das mit dem XPath machen sollte. Mit einem Regex könnte ich mir vorstellen, das zur Lösung zu bringen.

Für heute ist die Luft raus.
Morgen werde ich sehe, wie es weitergeht.
Viele​ Grüße​
Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 Mai 2020, 22:20:45
Aber ich habe auf Deutsch die XPath erklärt ;) Ok, ein einziges Beispiel reicht vielleicht nicht, um das ganze zu verstehen :D

Na dann
//a[contains(., "Euro") and contains(.,"Stoxx")]//span[@class="quote"]
oder
//span[contains(., "Euro") and contains(.,"Stoxx")]/..//span[@class="quote"]
oder
//span[contains(., "Euro") and contains(.,"Stoxx")]/following-sibling::*/span[@class="quote"]
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 10 Mai 2020, 12:07:48
Hallo amenomade,

das erste Beispiel funktioniert bereits, warum ich es bei dem bewendet haben lasse.
Ich interpretiere die doppelten // in der Mitte so: suche im restlichen Dokument nach dem, was dannach kommt. Wahrscheinlich ist es halb geraten halb richtig.

Viele​n Dank.
Mit diesen Beispielen kann ich mir beim nächsten HTTPMOD schon selber helfen.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 10 Mai 2020, 16:06:27
Zitat von: Gisbert am 10 Mai 2020, 12:07:48
Ich interpretiere die doppelten // in der Mitte so: suche im restlichen Dokument nach dem, was dannach kommt. Wahrscheinlich ist es halb geraten halb richtig.

Fast. Es bleibt trotzdem dem "a" node untergeordnet.
Das heisst dann, suche (immer noch innerhalb des "a" nodes) ein "span" node mit class "quote", egal die Tiefe
Mit einem einzigen Slash, müsste dieses span node direkt unter "a" stehen. Ander gesagt, mit der Konstrukt wie sie ist, müsste man dann /div/span schreiben
Die Hierarchie ist a/div/span
a/span findet nichts
a//span findet es
a/div/span findet es auch

Zitatdas erste Beispiel funktioniert bereits
Die andere auch. Das ist nur eine andere Logik der Suche.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 11 Mai 2020, 14:55:23
Hallo amenomade,

ich stolpere noch gerade über einen log-Eintrag, der offensichtlich mit einem stateformat zusammenhängt und auch bei verbose 0 auftaucht:
2020.05.11 14:46:46 1: PERL WARNING: Argument "-1.00%" isn't numeric in sprintf at .//FHEM/98_HTTPMOD.pm line 1958.
Das stateformat-Attribute:
Dax: [$name:dax] (<span style='color:{(ReadingsVal('$name','dax_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dax_perc]%</span>)<br>
Dow Jones: [$name:dow_jones] (<span style='color:{(ReadingsVal('$name','dow_jones_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dow_jones_perc]%</span>)<br>
EuroStoxx50: [$name:euro_stoxx_50] (<span style='color:{(ReadingsVal('$name','euro_stoxx_50_perc','') < 0 ? "red":"#2e5e87")}'>[$name:euro_stoxx_50_perc]%</span>)<br>
Nasdaq 100: [$name:nasdaq_100] (<span style='color:{(ReadingsVal('$name','nasdaq_100_perc','') < 0 ? "red":"#2e5e87")}'>[$name:nasdaq_100_perc]%</span>)

Das list des Devices:
Internals:
   BUSY       0
   DEF        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 600
   FUUID      5eb660c8-f33f-e986-feed-143cad5ec4289aea
   Interval   600
   LASTSEND   1589201494.00761
   MainURL    https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       Indizes_ARD
   NOTIFYDEV  global
   NR         971
   NTFY_ORDER 50-DowJones2
   STATE      Dax: 10764 (<span style='color:red'>-1.28%</span>)<br>
Dow Jones: 24085 (<span style='color:red'>-0.98%</span>)<br>
EuroStoxx50: 2867 (<span style='color:red'>-1.41%</span>)<br>
Nasdaq 100: 9220 (<span style='color:#2e5e87'>1.30%</span>)
   TRIGGERTIME 1589202094
   TRIGGERTIME_FMT 2020-05-11 15:01:34
   TYPE       HTTPMOD
   TimeAlign  1589061694
   TimeAlignFmt 2020-05-10 00:01:34
   XPathEnabled 1
   addr       https://kurse.boerse.ard.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   header     Cookie: USF-C-usf_mobil=2; usf_mobil=2
   host       kurse.boerse.ard.de
   httpheader HTTP/1.1 200 OK
server: Apache
last-modified: Mon, 11 May 2020 12:51:34 GMT
content-encoding: gzip
x-powered-by: USF-10/51/069/28
set-cookie: usf_mobil=2; path=/
set-cookie: USF-C-usf_mobil=2; path=/
content-type: text/html; charset=UTF-8
date: Mon, 11 May 2020 12:51:34 GMT
age: 0
via: 1.1 varnish
expires: Mon, 11 May 2020 12:51:34 GMT
pragma: no-cache
cache-control: no-cache
vary: Accept-Encoding,X-USF-Cookie,Cookie
x-usf-cache: MISS
x-usf-cachen: 53
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 74
   hu_port    443
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /ard/mobile/index.htn?mobilRedirect=1
   protocol   https
   redirects  0
   timeout    5
   url        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   value      0
   CompiledRegexes:
   HTTPCookieHash:
     USF-C-usf_mobil;/:
       Name       USF-C-usf_mobil
       Options    path=/
       Path       /
       Value      2
     usf_mobil;/:
       Name       usf_mobil
       Options    path=/
       Path       /
       Value      2
   OLDREADINGS:
   QUEUE:
   READINGS:
     2020-05-11 14:51:34   dax             10764
     2020-05-11 14:51:34   dax_perc        -1.28
     2020-05-11 14:51:34   dow_jones       24085
     2020-05-11 14:51:34   dow_jones_perc  -0.98
     2020-05-11 14:51:34   euro_stoxx_50   2867
     2020-05-11 14:51:34   euro_stoxx_50_perc -1.41
     2020-05-11 14:51:34   nasdaq_100      9220
     2020-05-11 14:51:34   nasdaq_100_perc 1.30
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
     value      0
   defptr:
     readingBase:
       dax        reading
       dax_perc   reading
       dax_perc-1 reading
       dax_perc-2 reading
       dax_perc-3 reading
       dax_perc-4 reading
       dax_perc-5 reading
       dow_jones  reading
       dow_jones_XPath reading
       dow_jones_perc reading
       dow_jones_perc_XPath reading
       euro_stoxx_50 reading
       euro_stoxx_50-1 reading
       euro_stoxx_50-2 reading
       euro_stoxx_50_perc reading
       nasdaq_100 reading
       nasdaq_100_perc reading
       reading03  reading
     readingNum:
       dax        01
       dax_perc   05
       dax_perc-1 05
       dax_perc-2 05
       dax_perc-3 05
       dax_perc-4 05
       dax_perc-5 05
       dow_jones  02
       dow_jones_XPath 03
       dow_jones_perc 06
       dow_jones_perc_XPath 04
       euro_stoxx_50 03
       euro_stoxx_50-1 03
       euro_stoxx_50-2 03
       euro_stoxx_50_perc 07
       nasdaq_100 04
       nasdaq_100_perc 08
       reading03  03
     readingOutdated:
     readingSubNum:
       dax_perc-1 -1
       dax_perc-2 -2
       dax_perc-3 -3
       dax_perc-4 -4
       dax_perc-5 -5
       euro_stoxx_50-1 -1
       euro_stoxx_50-2 -2
     requestReadings:
       update:
         dax        reading 01
         dax_perc   reading 05
         dax_perc-1 reading 05-1
         dax_perc-2 reading 05-2
         dax_perc-3 reading 05-3
         dax_perc-4 reading 05-4
         dax_perc-5 reading 05-5
         dow_jones  reading 02
         dow_jones_XPath reading 03
         dow_jones_perc reading 06
         dow_jones_perc_XPath reading 04
         euro_stoxx_50 reading 03
         euro_stoxx_50-1 reading 03-1
         euro_stoxx_50-2 reading 03-2
         euro_stoxx_50_perc reading 07
         nasdaq_100 reading 04
         nasdaq_100_perc reading 08
         reading03  reading 03
   helper:
     bm:
       HTTPMOD_Attr:
         cnt        262
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.05. 16:28:52
         max        0.250963926315308
         tot        1.60140299797058
         mAr:
           set
           DowJones2
           reading01XPath
           /html/body/div[2]/div/div/div/div/div/div[1]/div/div[1]/a[2]/span[4]
       HTTPMOD_Define:
         cnt        5
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        10.05. 20:39:07
         max        0.00166606903076172
         tot        0.00743412971496582
         mAr:
           HASH(0x55f990df6858)
           Indizes_ARD HTTPMOD https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 600
       HTTPMOD_Get:
         cnt        294
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 12:00:25
         max        0.000257015228271484
         tot        0.0248551368713379
         mAr:
           HASH(0x55f990df6858)
           Indizes_ARD
           ?
       HTTPMOD_Notify:
         cnt        335
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        11.05. 14:21:44
         max        2.40802764892578e-05
         tot        0.00418925285339355
         mAr:
           HASH(0x55f990df6858)
           HASH(0x55f986021600)
       HTTPMOD_Set:
         cnt        1278
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        09.05. 16:58:05
         max        0.00814700126647949
         tot        0.893979072570801
         mAr:
           HASH(0x55f990df6858)
           Indizes_ARD
           ?
   sslargs:
Attributes:
   alias      börse.<b>ARD</b>.de
   alignTime  00:01:34
   event-min-interval .*:1800
   event-on-change-reading .*
   group      Index
   reading01Format %.0f
   reading01Name dax
   reading01OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading01XPath //a[contains(., 'Dax')]/span[@class="quote"]
   reading02Format %.0f
   reading02Name dow_jones
   reading02OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading02XPath //a[contains(., 'Jones')]/span[@class="quote"]
   reading03Format %.0f
   reading03Name euro_stoxx_50
   reading03OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading03XPath //a[contains(.,"Euro") and contains(.,"Stoxx")]//span[@class="quote"]
   reading04Format %.0f
   reading04Name nasdaq_100
   reading04OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading04XPath //a[contains(., 'Nasdaq')]/span[@class="quote"]
   reading05Format %.2f
   reading05Name dax_perc
   reading05OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val
   reading05XPath //a[contains(., 'Dax')]/span[@class="change pos" or @class="change neg"]
   reading06Format %.2f
   reading06Name dow_jones_perc
   reading06OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val
   reading06XPath //a[contains(., 'Jones')]/span[@class="change pos" or @class="change neg"]
   reading07Format %.2f
   reading07Name euro_stoxx_50_perc
   reading07OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val
   reading07XPath //a[contains(.,"Euro") and contains(.,"Stoxx")]//span[@class="change pos" or @class="change neg"]
   reading08Format %.2f
   reading08Name nasdaq_100_perc
   reading08OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val
   reading08XPath //a[contains(., 'Nasdaq')]/span[@class="change pos" or @class="change neg"]
   room       Finance
   sortby     1
   stateFormat Dax: [$name:dax] (<span style='color:{(ReadingsVal('$name','dax_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dax_perc]%</span>)<br>
Dow Jones: [$name:dow_jones] (<span style='color:{(ReadingsVal('$name','dow_jones_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dow_jones_perc]%</span>)<br>
EuroStoxx50: [$name:euro_stoxx_50] (<span style='color:{(ReadingsVal('$name','euro_stoxx_50_perc','') < 0 ? "red":"#2e5e87")}'>[$name:euro_stoxx_50_perc]%</span>)<br>
Nasdaq 100: [$name:nasdaq_100] (<span style='color:{(ReadingsVal('$name','nasdaq_100_perc','') < 0 ? "red":"#2e5e87")}'>[$name:nasdaq_100_perc]%</span>)
   timeout    5
   userattr   reading01Format reading01Name reading01OExpr reading01XPath reading02Format reading02Name reading02OExpr reading02XPath reading03Format reading03Name reading03OExpr reading03XPath reading04Format reading04Name reading04OExpr reading04XPath reading05Format reading05Name reading05OExpr reading05XPath reading06Format reading06Name reading06OExpr reading06XPath reading07Format reading07Name reading07OExpr reading07XPath reading08Format reading08Name reading08OExpr reading08XPath
   verbose    0


Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 11 Mai 2020, 19:02:14
Ne, das kommt wahrscheinlich von reading05 bis reading08, die das % Zeichen mitbringen, und die Du versuchst, mit readingxxFormat zu formattieren.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 11 Mai 2020, 22:39:31
Hallo amenomade,

ich hab jetzt 'ne Stunde gesucht, bis die Tomaten, quasi wie Schuppen von den Augen gefallen sind wegen des Prozentzeichens, das durch das Auslesen bereits ausgeliefert wird und damit nicht mehr zu einem numerischen Ausdruck führen kann.
Ich hab das Prozentzeichen entfernt, um einen numerischen Ausdruck zu bekommen, dann der Optik wegen wieder im stateFormat eins zugefügt.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: jkriegl am 29 Mai 2020, 19:53:43
Frage zu extractAllJSONFilter.
Mehrere werden mit | verbunden. In den Daten https://corona.lmao.ninja/V2/countries/Germany befindet sich z.B. "cases" und "casesPerOneMillion".
Wie kann ich das 2. erzeugte reading ("casesPerOneMillion") unterdrücken?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: jkriegl am 30 Mai 2020, 12:39:51
Hab es selbst gefunden.
Man muss in extractALLJSONFilter z.B die Readings cases|active in "\b" setzen

Das ganze ist also sehr einfach:
extractALLJSON=1 und extractALLJSONFilter=\bcases\b|\bactive\b
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 30 Mai 2020, 19:18:00
Ich habe ein Problem, das hoffentlich nichts mit der (neu angeschafften) Fritzbox zu tun hat, denn deren DHCP nervt mich manchmal.

Ich habe eine Kamera rasp.fritz.box, die in der "Heimnetzwerk"-Seite der FB unter
Zitatrasp LAN 1 mit 1 Gbit/s 192.168.2.33 00:XX:YY:ZZ:AA:BB
ansprechbar ist. Es gibt kein Gerät, dem die IP 192.168.2.4 zugeordnet ist. Ich habe ein HTTPMOD device
Internals:
   BUSY       0
   DEF        none 0
   FUUID      5e244be6-f33f-1115-1e97-6f1194dda70a2f27
   FVERSION   98_HTTPMOD.pm:0.211410/2020-02-07
   Interval   0
   LASTSEND   1590858563.55447
   MainURL   
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       Pikrellcam
   NOTIFYDEV  global
   NR         258
   NTFY_ORDER 50-Pikrellcam
   ReplacementEnabled 1
   STATE      <a href="http://rasp.fritz.box">Link</a>
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://rasp.fritz.box:80
   auth       0
   data       
   displayurl http://rasp.fritz.box/fifo_command.php?cmd=still
   header     
   host       rasp.fritz.box
   httpversion 1.0
   ignoreredirects 1
   loglevel   4
   path       /fifo_command.php?cmd=still
   protocol   http
   redirects  0
   timeout    2
   url        http://rasp.fritz.box/fifo_command.php?cmd=still
   value      0
   CompiledRegexes:
   QUEUE:
   READINGS:
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       set06
     url        http://%%url%%/fifo_command.php?cmd=still
     value      0
   sslargs:
Attributes:
   comment    Dieses HTTPMOD-Modul erlaubt die Steuerung von Pikrellcam über http-Befehle. Die enstprechende URL *muss* in jeden Set-Befehl eingetragen werden, im define muss "none" als URL stehen. Derzeit implementiert
1.) set <device> motion on/off
2.) set <device> archive_day YYYY-MM-DD (nur für einzeln einzugebende Tage)
3.) set <device> delete_day YYYY-MM-DD (nur für einzeln einzugebende Tage, die nicht archiviert wurden)
4.) set <device> archive_yesterday (Fotos/Videos von gestern archiviert)
5.) set <device> delete_last_month (loesche archivierte Fotos/Videos)
6.) set <device> still (loest Foto aus)
Das archivierte Medium wird im Attribut type festgelegt (stills oder videos).
   group      intern
   replacement01Mode reading
   replacement01Regex %%yesterday%%
   replacement01Value Sonne:yesterday
   replacement02Mode reading
   replacement02Regex %%year%%
   replacement02Value Sonne:year
   replacement03Mode reading
   replacement03Regex %%last_month%%
   replacement03Value Sonne:last_month
   replacement04Mode text
   replacement04Regex %%type%%
   replacement04Value videos
   replacement05Mode text
   replacement05Regex %%url%%
   replacement05Value rasp.fritz.box
   room       Kameras
   set01Name  motion
   set01TextArg 1
   set01URL   http://%%url%%/fifo_command.php?cmd=motion_enable%20$val
   set02Name  archive_day
   set02TextArg 1
   set02URL   http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&archive_date=$val
   set03Name  delete_day
   set03TextArg 1
   set03URL   http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&delete_day=$val
   set04Name  archive_yesterday
   set04NoArg 1
   set04URL   http://%%url%%/media-archive.php?mode=media&type=%%type%%&dir=media&archive_date=%%yesterday%%
   set05Name  delete_last_month
   set05NoArg 1
   set05URL   http://%%url%%/media-archive.php?mode=archive&type=%%type%%&year=%%year%%&m0=%%last_month%%&d0=1&m1=%%last_month%%&d1=31&delete_all
   set06Name  still
   set06NoArg 1
   set06URL   http://%%url%%/fifo_command.php?cmd=still
   stateFormat <a href="http://rasp.fritz.box">Link</a>
   userattr   replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value set01Name set01TextArg:0,1 set01URL set02Name set02TextArg:0,1 set02URL set03Name set03TextArg:0,1 set03URL set04Name set04NoArg:0,1 set04URL set05Name set05NoArg:0,1 set05URL set06Name set06NoArg:0,1 set06URL

mit dem ich die Kamera anspreche. Der Befehl "set ... still" verweist nun auf eine anscheinend alte IP (siehe unten):
2020.05.30 19:09:23 5: Pikrellcam: set called with still
2020.05.30 19:09:23 5: Pikrellcam: set found option still in attribute set06Name
2020.05.30 19:09:23 4: Pikrellcam: set will now set still
2020.05.30 19:09:23 5: Pikrellcam: AddToQueue adds type set06 to URL http://%%url%%/fifo_command.php?cmd=still, no data, no headers, retry 0, initial queue len: 0
2020.05.30 19:09:23 5: Pikrellcam: HandleSendQueue called, qlen = 1
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement01 as (?^:%%yesterday%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%yesterday%%), mode reading, value Sonne:yesterday input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement02 as (?^:%%year%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%year%%), mode reading, value Sonne:year input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement03 as (?^:%%last_month%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%last_month%%), mode reading, value Sonne:last_month input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement04 as (?^:%%type%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%type%%), mode text, value videos input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement05 as (?^:%%url%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%url%%), mode text, value rasp.fritz.box input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement01 as (?^:%%yesterday%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%yesterday%%), mode reading, value Sonne:yesterday input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement02 as (?^:%%year%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%year%%), mode reading, value Sonne:year input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement03 as (?^:%%last_month%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%last_month%%), mode reading, value Sonne:last_month input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement04 as (?^:%%type%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%type%%), mode text, value videos input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement05 as (?^:%%url%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%url%%), mode text, value rasp.fritz.box input:
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement01 as (?^:%%yesterday%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%yesterday%%), mode reading, value Sonne:yesterday input: http://%%url%%/fifo_command.php?cmd=still
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement02 as (?^:%%year%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%year%%), mode reading, value Sonne:year input: http://%%url%%/fifo_command.php?cmd=still
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement03 as (?^:%%last_month%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%last_month%%), mode reading, value Sonne:last_month input: http://%%url%%/fifo_command.php?cmd=still
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement04 as (?^:%%type%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%type%%), mode text, value videos input: http://%%url%%/fifo_command.php?cmd=still
2020.05.30 19:09:23 5: Pikrellcam: GetRegex found precompiled Regex for replacement05 as (?^:%%url%%)
2020.05.30 19:09:23 5: Pikrellcam: Replace called for type set06, regex (?^:%%url%%), mode text, value rasp.fritz.box input: http://%%url%%/fifo_command.php?cmd=still
2020.05.30 19:09:23 5: Pikrellcam: Replace: match for type set06, regex (?^:%%url%%), mode text, value rasp.fritz.box, input: http://%%url%%/fifo_command.php?cmd=still, result is http://rasp.fritz.box/fifo_command.php?cmd=still
2020.05.30 19:09:23 4: Pikrellcam: HandleSendQueue sends set06 with timeout 2 to http://rasp.fritz.box/fifo_command.php?cmd=still, No Data, No Header
2020.05.30 19:09:23 5: HttpUtils url=http://rasp.fritz.box/fifo_command.php?cmd=still
2020.05.30 19:09:23 4: IP: rasp.fritz.box -> 192.168.2.4       <====== AN DIESER STELLE
2020.05.30 19:09:25 3: Pikrellcam: Read callback: Error: connect to http://rasp.fritz.box:80 timed out
2020.05.30 19:09:25 4: Pikrellcam: Read callback: request type was set06 retry 0, no headers, no body
2020.05.30 19:09:25 5: Pikrellcam: Read callback: body empty
2020.05.30 19:09:25 4: Pikrellcam: Read found no charset header (bodyDecode was set to auto)
2020.05.30 19:09:25 5: Pikrellcam: GetCookies is looking for Cookies
2020.05.30 19:09:25 5: Pikrellcam: ExtractSid called, context set, num 06
2020.05.30 19:09:25 4: Pikrellcam: no header to look for redirects
2020.05.30 19:09:25 5: Pikrellcam: CheckAuth decided no authentication required

Weiß jemand, was da schief läuft?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 Mai 2020, 19:48:55
Mach in Eingabefeld von Fhem ein
"ping rasp.fritz.box -c 2"inkl. Einführungszeichen

Was sagt dann die Log?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 30 Mai 2020, 20:05:01
PING rasp.fritz.box(rasp.fritz.box (2003:cf:571c:b500:733e:xxxx:xxxx:xxxx)) 56 data bytes
64 bytes from rasp.fritz.box (2003:cf:571c:b500:733e:xxxx:xxxx:xxxx): icmp_seq=1 ttl=64 time=64.9 ms
64 bytes from rasp.fritz.box (2003:cf:571c:b500:733e:xxxx:xxxx:xxxx): icmp_seq=2 ttl=64 time=2.10 ms

--- rasp.fritz.box ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 3ms
rtt min/avg/max/mdev = 2.100/33.522/64.945/31.423 ms
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 Mai 2020, 20:08:21
Dann eher
"ping rasp.fritz.box -4 -c 2"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 30 Mai 2020, 20:10:28
PING rasp.fritz.box (192.168.2.4) 56(84) bytes of data.
From raspfhem.fritz.box (192.168.2.18) icmp_seq=1 Destination Host Unreachable
From raspfhem.fritz.box (192.168.2.18) icmp_seq=2 Destination Host Unreachable

--- rasp.fritz.box ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 7ms
pipe 2

Aha. Aber was bedeutet das?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 Mai 2020, 20:20:51
Routing bzw. DNS/DHCP Problem

Was hast Du als dnsServer und ggf dnsHostsFile auf deinem global Device?

Ergibt das ping in einem Terminal das gleiche Ergebnis?

Hast Du irgendwie in der Fritzbox eine feste IP dem rasp.fritz.box zugewiesen?

Sind alle Geräte im gleichem Subnetz?

Hast Du vor kurzem die IP Adresse von rasp geändert, bzw. wurde diese IP durch das Wechseln der Fritzbox geändert? In diesem Fall könnte ein flushdns helfen

EDIT: und ein "traceroute rasp.fritz.box" könnte auch helfen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 30 Mai 2020, 20:55:03
Zitat von: amenomade am 30 Mai 2020, 20:20:51
Hast Du vor kurzem die IP Adresse von rasp geändert, bzw. wurde diese IP durch das Wechseln der Fritzbox geändert? In diesem Fall könnte ein flushdns helfen
Das war es: ich habe eine neue FB installiert und dabei wurden alle IP Adressen geändert. Danke, dann schaue ich mal nach dem Stichwort flushdns, das sollte das Problem lösen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 Mai 2020, 21:05:51
https://vitux.com/two-ways-to-flush-the-dns-cache-on-debian-10-buster/
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 30 Mai 2020, 21:08:54
danke, hatte mir schon einen Wolf gesucht. Jetzt kann ich pingen, klappt alles!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 02 Juli 2020, 19:31:41
Hallo,

ich habe mit der folgenden Definition ein Problem, in der Art und Weise, dass ich seit dem 26.6. keine neuen Readings mehr reinbekomme.

Zur Historie:
ich hab mir meine Linux-Installation am gleichen Tag so versemmelt, dass nur noch das Einspielen eines 2 Monate alten Backups der root-Partition half. Ein Fhem-Backup war nur eine Woche alt, dieses habe ich auch aufgespielt.
Das meiste lief ohne weiteres rund, gelegentlich hat ein Paket gefehlt, dass ich händisch nachinstalliert hatte.

Lediglich die nachfolgende Definition wehrt sich hartnäckig neue Readings zu liefern; notwendige Pakete hatte ich nachinstalliert:
sudo apt-get install libhtml-treebuilder-xpath-perl

Kann mir jemand unter die Arme greifen?

Internals:
   BUSY       0
   DEF        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 600
   FUUID      5eb660c8-f33f-e986-feed-143cad5ec4289aea
   Interval   600
   LASTSEND   1593710494.0095
   MainURL    https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       Indizes_ARD
   NOTIFYDEV  global
   NR         971
   NTFY_ORDER 50-Indizes_ARD
   STATE      Dax: 12089 (-0.73%)

Dow Jones: 25019 (-2.82%)

EuroStoxx50: 3204 (-0.46%)

Nasdaq 100: 9849 (-2.50%)
   TRIGGERTIME 1593711094
   TRIGGERTIME_FMT 2020-07-02 19:31:34
   TYPE       HTTPMOD
   TimeAlign  1593381694
   TimeAlignFmt 2020-06-29 00:01:34
   addr       https://kurse.boerse.ard.de:443
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   header     Cookie: USF-C-usf_mobil=2; usf_mobil=2
   host       kurse.boerse.ard.de
   httpheader HTTP/1.1 200 OK
server: Apache
last-modified: Thu, 02 Jul 2020 17:21:34 GMT
content-encoding: gzip
x-powered-by: USF-10/83/039/22
set-cookie: usf_mobil=2; path=/
set-cookie: USF-C-usf_mobil=2; path=/
content-type: text/html; charset=UTF-8
date: Thu, 02 Jul 2020 17:21:34 GMT
age: 0
via: 1.1 varnish
expires: Thu, 02 Jul 2020 17:21:34 GMT
pragma: no-cache
cache-control: no-cache
vary: Accept-Encoding,X-USF-Cookie,Cookie
x-usf-cache: MISS
x-usf-cachen: 55
x-xss-protection: 1; mode=block
x-content-type-options: nosniff
connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 289
   hu_port    443
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /ard/mobile/index.htn?mobilRedirect=1
   protocol   https
   redirects  0
   timeout    5
   url        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
   value      0
   HTTPCookieHash:
     USF-C-usf_mobil;/:
       Name       USF-C-usf_mobil
       Options    path=/
       Path       /
       Value      2
     usf_mobil;/:
       Name       usf_mobil
       Options    path=/
       Path       /
       Value      2
   QUEUE:
   READINGS:
     2020-06-26 23:21:34   dax             12089
     2020-06-26 23:21:34   dax_perc        -0.73
     2020-06-26 23:21:34   dow_jones       25019
     2020-06-26 23:21:34   dow_jones_perc  -2.82
     2020-06-26 23:21:34   euro_stoxx_50   3204
     2020-06-26 23:21:34   euro_stoxx_50_perc -0.46
     2020-06-26 23:21:34   nasdaq_100      9849
     2020-06-26 23:21:34   nasdaq_100_perc -2.50
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1
     value      0
   helper:
     bm:
       HTTPMOD_Attr:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.07. 16:13:53
         max        0.00546693801879883
         tot        0.00553393363952637
         mAr:
           set
           Indizes_ARD
           verbose
           5
       HTTPMOD_Get:
         cnt        18
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.07. 16:14:41
         max        0.000158071517944336
         tot        0.00149178504943848
         mAr:
           HASH(0x561eb21b4f10)
           Indizes_ARD
           ?
       HTTPMOD_Notify:
         cnt        41
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        02.07. 10:37:11
         max        1.81198120117188e-05
         tot        0.000410079956054688
         mAr:
           HASH(0x561eb21b4f10)
           HASH(0x561ea72e4bf8)
       HTTPMOD_Set:
         cnt        82
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.06. 20:13:03
         max        0.0149388313293457
         tot        0.0722296237945557
         mAr:
           HASH(0x561eb21b4f10)
           Indizes_ARD
           ?
   sslargs:
Attributes:
   alias      börse.ARD.de
   alignTime  00:01:34
   event-min-interval .*:1800
   event-on-change-reading .*
   group      Index
   reading01Format %.0f
   reading01Name dax
   reading01OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading02Format %.0f
   reading02Name dow_jones
   reading02OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading03Format %.0f
   reading03Name euro_stoxx_50
   reading03OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading04Format %.0f
   reading04Name nasdaq_100
   reading04OExpr $val =~ s/\.//g; $val =~ s/\,/./g; $val
   reading05Name dax_perc
   reading05OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val =~ s/\%//g; $val
   reading06Name dow_jones_perc
   reading06OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val =~ s/\%//g; $val
   reading07Name euro_stoxx_50_perc
   reading07OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val =~ s/\%//g; $val
   reading08Name nasdaq_100_perc
   reading08OExpr $val =~ s/\,/./g; $val =~ s/\+//g; $val =~ s/\%//g; $val
   room       Finance
   sortby     1
   stateFormat Dax: [$name:dax] ([$name:dax_perc]%)

Dow Jones: [$name:dow_jones] ([$name:dow_jones_perc]%)

EuroStoxx50: [$name:euro_stoxx_50] ([$name:euro_stoxx_50_perc]%)

Nasdaq 100: [$name:nasdaq_100] ([$name:nasdaq_100_perc]%)
   timeout    5
   userattr   reading01Format reading01Name reading01OExpr reading01XPath reading02Format reading02Name reading02OExpr reading02XPath reading03Format reading03Name reading03OExpr reading03XPath reading04Format reading04Name reading04OExpr reading04XPath reading05Format reading05Name reading05OExpr reading05XPath reading06Format reading06Name reading06OExpr reading06XPath reading07Format reading07Name reading07OExpr reading07XPath reading08Format reading08Name reading08OExpr reading08XPath


Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 02 Juli 2020, 22:35:47
Wie findet das Ding denn die Werte der Kurse? Ich sehe da irgendwie nur den readingname und wie der extrahierte Wert umformatiert werden soll, nicht aber wie der Wert selbst extrahiert werden soll. Fehlt da nicht irgendwas?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 03 Juli 2020, 07:46:22
Zitat von: mumpitzstuff am 02 Juli 2020, 22:35:47
Wie findet das Ding denn die Werte der Kurse? Ich sehe da irgendwie nur den readingname und wie der extrahierte Wert umformatiert werden soll, nicht aber wie der Wert selbst extrahiert werden soll. Fehlt da nicht irgendwas?

Hallo mumpitzstuff,

danke für den entscheidenden Hinweis.
Es fehlten tatsächlich Attribute, die die Werte extrahieren können.

Warum fehlen die nach dem Einspielen des Fhem-Backups?
Ich kann es mir so erklären. Mit dem Backup des root-Verzeichnisses habe ich auch Fhem mit einem 2 Monate alten Stand zurückgespielt. Das Backup der nur eine Woche alten Fhem-Dateien hat dann offensichtlich dazu geführt, dass Attribute, die die nicht zum Fhem-Stand passen, entfernt wurden. Das ist auch bei einem anderen Fhem-Modul passiert, da ist es mir aber sehr schnell aufgefallen, und ich hab die Definition angepasst.

Merke:
Vor Einspielen eines Fhem-Backup ein update durchführen !!

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 12:03:29
Hallo zusammen,
ich habe da noch 2-3 HTTPMOD Verbindungen, die ich über Python Skripte anderer Zulieferer verwende. Hier fehlt mir leider die Kenntniss, um das direkt ins HTTPMOD umzusetzen.
Ich komme zwar mit Burp recht gut zurecht und habe es auch schon an anderer Stelle erfolgreich verwendet, jedoch komme ich bei den besagten Verbindungen/Abfragen nicht weiter.
Die Useranmeldung ist mir schleierhaft.

1) Kostal Plenticore 10 API
Das zeigt die undokumentierte API Schnittstelle des Gerätes

http://<IP-Adresse>/api/v1
auth : AuthenticationShow/HideList OperationsExpand Operations
POST /auth/start     Starts the authentication process
POST /auth/logout    Deletes the current session, the session id is no longer valid
POST /auth/create_session    Creates a session for regular access to the API
POST /auth/finish     Finishes the authentication process
POST /auth/set_password     Sets a new password after successful authentication with master-key or user-password
GET /auth/me    Returns information about the user


Und so wurde es in Python3 umgesetzt

import random
import string
import base64
import json
import requests
import hashlib
import os
import hmac
from Crypto.Cipher import AES
import binascii
# pip install pycryptodome

USER_TYPE = "user"
PASSWD = '<Passwort>'
BASE_URL = "http://<IP-Adresse>/api/v1"
AUTH_START = "/auth/start"
AUTH_FINISH = "/auth/finish"

AUTH_CREATE_SESSION = "/auth/create_session"
ME = "/auth/me"

#################################################################################
##
## Hier geht es schon mit der Generierung eines 12 Zeichen langen Strings los, der als "Schlüssel" verwendet wird
## Kann man das im HTTPMOD im sid Bereich auch irgend wie generieren???
##
def randomString(stringLength):
    letters = string.ascii_letters
    return ''.join(random.choice(letters) for i in range(stringLength))

u = randomString(12)
u = base64.b64encode(u.encode('utf-8')).decode('utf-8')

#################################################################################
##
## Hier wird der Data teil als json zusammen gesetzt
##
step1 = {
  "username": USER_TYPE,
  "nonce": u
}
step1 = json.dumps(step1)

#################################################################################
##
## Das wäre dann wohl der erste sid Aufruf
##
url = BASE_URL + AUTH_START
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
response = requests.post(url, data=step1, headers=headers)

#################################################################################
##
## Nun wird die Rückmeldung gelesen
##
## Wie kann ich denn im HTTPMOD dann die Aktion mit dem bitSalt abbilden???
##
response = json.loads(response.text)
i = response['nonce']
e = response['transactionId']
o = response['rounds']
a = response['salt']
bitSalt = base64.b64decode(a)

#################################################################################
##
## Und direkt danach muss ich dann das Passwort verschlüsseln, da habe ich auch keine Umsetzungsidee.
## Gibt es im FHEM äquivalente Funktionen für den HASH oder wie oben für zufällige Buchstaben???
##
def getPBKDF2Hash(password, bytedSalt, rounds):
    return hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), bytedSalt, rounds)

r = getPBKDF2Hash(PASSWD,bitSalt,o)
s = hmac.new(r, "Client Key".encode('utf-8'), hashlib.sha256).digest()
c = hmac.new(r, "Server Key".encode('utf-8'), hashlib.sha256).digest()
_ = hashlib.sha256(s).digest()
d = "n=user,r="+u+",r="+i+",s="+a+",i="+str(o)+",c=biws,r="+i
g = hmac.new(_, d.encode('utf-8'), hashlib.sha256).digest()
p = hmac.new(c, d.encode('utf-8'), hashlib.sha256).digest()
f = bytes(a ^ b for (a, b) in zip(s, g))
proof = base64.b64encode(f).decode('utf-8')

################## Hier stoppe ich erstmal mit den Fragen #############################################################################

step2 = {
  "transactionId": e,
  "proof": proof
}
step2 = json.dumps(step2)

url = BASE_URL + AUTH_FINISH
headers = {'Content-type': 'application/json', 'Accept': 'application/json'}
response = requests.post(url, data=step2, headers=headers)
response = json.loads(response.text)
token = response['token']
signature = response['signature']

y = hmac.new(_, "Session Key".encode('utf-8'), hashlib.sha256)
y.update(d.encode('utf-8'))
y.update(s)
P = y.digest()
protocol_key = P
t = os.urandom(16)

e2 = AES.new(protocol_key,AES.MODE_GCM,t)
e2, authtag = e2.encrypt_and_digest(token.encode('utf-8'))

step3 = {
  "transactionId": e,
  "iv": base64.b64encode(t).decode('utf-8'),
  "tag": base64.b64encode(authtag).decode("utf-8"),
  "payload": base64.b64encode(e2).decode('utf-8')
}
step3 = json.dumps(step3)

headers = { 'Content-type': 'application/json', 'Accept': 'application/json' }
url = BASE_URL + AUTH_CREATE_SESSION
response = requests.post(url, data=step3, headers=headers)
response = json.loads(response.text)
sessionId = response['sessionId']

#create a new header with the new Session-ID for all further requests
headers = { 'Content-type': 'application/json', 'Accept': 'application/json', 'authorization': "Session " + sessionId }
url = BASE_URL + ME
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
authOK = response['authenticated']
if not authOK:
    print("authorization NOT OK")
    sys.exit()

url = BASE_URL + "/info/version"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
swversion = response['sw_version']
apiversion = response['api_version']
hostname = response['hostname']
name = response['name']
print("Connected to the inverter " + name + "/" + hostname + " with SW-Version " + swversion + " and API-Version " + apiversion)

# Auth OK, now send your desired requests


url = BASE_URL + "/auth/me"
response = requests.get(url = url, headers = headers)
response = json.loads(response.text)
print(json.dumps(response, indent=4, sort_keys=True))


Meine ersten Fragen habe ich als Kommentare in den Code Bereich geschrieben.

Über Starthilfe würde ich mich freuen, da ich ja auch noch zwei Weitere Fälle habe :-)
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 17:41:52
Hallo nochmal,
ich bin dann doch schon einige Schritte gegangen...
Wie komme ich den an die internen values? Oder muss ich die nochmal selber einsammeln, obwohl das Modul die ja schon hat?

2020.08.14 17:36:12.575 5: PV_Anlage_test: JSON Flatter called : prefix , ref is HASH(0xa540840)
2020.08.14 17:36:12.575 5: PV_Anlage_test: JSON Flatter sets salt to 26d5h2QtrFzMf9Nq
2020.08.14 17:36:12.575 5: PV_Anlage_test: JSON Flatter sets rounds to 29000
2020.08.14 17:36:12.575 5: PV_Anlage_test: JSON Flatter sets nonce to 28ED3DE20522vNHrLfeyIqrYV7Eb
2020.08.14 17:36:12.575 5: PV_Anlage_test: JSON Flatter sets transactionId to fdbad8dc9be611f8ebd51e9b265bc4f05cc6a7e1836f069cb497fc2bdc76fd16
2020.08.14 17:36:12.575 4: PV_Anlage_test: extracted JSON values to internal
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 August 2020, 18:10:52
Sieht so aus wie Daten, die nicht entschlüsselt sind (wahrscheinlich weil Du nicht erfolgreich authentifiziert bist)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 18:19:54
Vielen Dank für's mitdenken,
ich bin schon weiter und es sind die Informationen für den Session Aufbau.
mit "extractAllJSON 2" wurde die json Antwort gelesen und als readings angelegt, womit sich die Frage schon beantwortet hat.
durch "sidParseResponse 1" wurde das auch mit dem sid Teil gemacht.
Dann habe ich die Namen noch angepasst und schon sieht es echt gut aus.

auth_me_active 0 2020-08-14 18:11:07
auth_me_anonymous 1 2020-08-14 18:11:07
auth_me_authenticated 0 2020-08-14 18:11:07
auth_me_locked 0 2020-08-14 18:11:07
auth_me_role NONE 2020-08-14 18:11:07
auth_nonce 28ED3DE20522FVAZFiSelwrf3lEL 2020-08-14 18:11:06
auth_rounds 29000 2020-08-14 18:11:06
auth_salt 26d5h2QtrFzMf9Nq 2020-08-14 18:11:06
auth_transactionId 63ae2ddb40a8510c100ea4adcfb1a70cbb91e3c5e470de41c535cbc57b7452e3 2020-08-14 18:11:06


Nun kommt der zweite sid Teil mit den nonce, rounds, salt, und transactionId angaben.
Sollte das klappen, kann ich bald das Python Skript aus Fhem wieder ausbauen :-)

Wie immer kommt dann noch ein separater Thread für das gesamte Device, indem ich das dann vorstelle.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 18:32:16
Ach herje, was mach ich denn jetzt damit?

a = response['salt']                          <<<<<<<<<<das habe ich bereits als reading
bitSalt = base64.b64decode(a)

def getPBKDF2Hash(password, bytedSalt, rounds):
    return hashlib.pbkdf2_hmac('sha256', password.encode('utf-8'), bytedSalt, rounds)

r = getPBKDF2Hash(PASSWD,bitSalt,o)


s = hmac.new(r, "Client Key".encode('utf-8'), hashlib.sha256).digest()
c = hmac.new(r, "Server Key".encode('utf-8'), hashlib.sha256).digest()
_ = hashlib.sha256(s).digest()
d = "n=user,r="+u+",r="+i+",s="+a+",i="+str(o)+",c=biws,r="+i
g = hmac.new(_, d.encode('utf-8'), hashlib.sha256).digest()
p = hmac.new(c, d.encode('utf-8'), hashlib.sha256).digest()
f = bytes(a ^ b for (a, b) in zip(s, g))
proof = base64.b64encode(f).decode('utf-8')

step2 = {
  "transactionId": e,
  "proof": proof
}


Ich verstehe das jetzt mal so, dass ich nach einem bestimmten Algorithmus das Passwort umwandeln muss.
Gibt es dazu eine Perl Crypto Bibliothek?
Input wäre: sha256 Verschlüsselung, das Passwort, der salt String und die Anzahl der Durchläufe.
EDIT: https://metacpan.org/pod/Crypt::OpenSSL::FASTPBKDF2 (https://metacpan.org/pod/Crypt::OpenSSL::FASTPBKDF2) das wäre was, aber wie baue ich das dann in HTTPMOD ein?

Wie es dann zu "proof" kommt verstehe ich bisher überhaupt nicht.

Hilfe, hilfe :-)
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 August 2020, 18:40:31
Das kannst Du nicht ohne eine sub in myUtils.

Dann mit xxxReplacementMode expression
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 19:01:32
Zitat von: amenomade am 14 August 2020, 18:40:31
Das kannst Du nicht ohne eine sub in myUtils.

Dann mit xxxReplacementMode expression

Okay, der Mechanismus ist mir geläufig, nur wie bekomme ich das nach Perl konvertiert?

Der zweite sid Teil wäre jetzt auch schon bereit, nur fehlt mir der Wert für "proof" :-(
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 August 2020, 19:12:50
Da muss man ggf die python Doku zu pbkdf2_hmac lesen, aber prinzipiell irgendwie so:
use Crypt::OpenSSL::FASTPBKDF2 qw/fastpbkdf2_hmac_sha256/;
sub cryptPW {
  my $pw = shift; #password
  my $salt = shift; #salt
  my $rounds = shift; #rounds
  return fastpbkdf2_hmac_sha256($pw, $salt,. ..) # welche Parameter?
}

da kenne ich die optionale Parameter von der Python Funktion nicht und kann dir deswegen nicht sagen, was Du für die entspr. Parameter der Perl Funktion mitgeben musst
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 August 2020, 19:16:33
Zitat von: amenomade am 14 August 2020, 19:12:50
Da muss man ggf die python Doku zu pbkdf2_hmac lesen, aber prinzipiell irgendwie so:
use Crypt::OpenSSL::FASTPBKDF2 qw/fastpbkdf2_hmac_sha256/;
sub cryptPW {
  my $pw = shift; #password
  my $salt = shift; #salt
  my $rounds = shift; #rounds
  return fastpbkdf2_hmac_sha256($pw, $salt,. ..) # welche Parameter?
}

da kenne ich die optionale Parameter von der Python Funktion nicht und kann dir deswegen nicht sagen, was Du für die entspr. Parameter der Perl Funktion mitgeben musst

Okay, so in der Art hatte ich das auch schon in der Vorstellung. Danke.

Ich habe den Skript Autor vom Python Code mal angeschrieben, der war bisher immer sehr nett :-)
EDIT: Okay, der code kam damals von Stackoverflow und wurde nur angewendet...

Ansonsten müssen die Entwickler von Kostal wieder dran glauben.
EDIT: Das ist mal wieder enttäuschend gewesen, Kostal scheint noch nichtmals eine interne Dokumentation zu besitzen, wie man die API Web Seite anwendet. Hier kam dann nur der Hinweis auf OpenHub.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 August 2020, 17:56:43
Hallo,

ich habe mal angefangen HTTPMOD aufzuhübschen.
Die wichtigste Änderung ist dabei dass das Modul einen eigenen Namespace bekommen hat.
Als Anwender sollte man davon nichts bemerken, aber genau da könnte es Probleme geben. Deshalb würde ich mich freuen, wenn ich etwas Hilfe beim Testen bekomme.
Ich habe versucht, einiges an automatischen Tests zu schreiben, allerdings decken die sicher noch nicht alles ab. Wer hier seine Anwendungsfälle hinzufügen möchte kann gerne mithelfen.
Meine Tests sind eingecheckt und liegen unter t/FHEM/98_HTTPMOD/.
Vor dem Update auf das neue Modul sollte per update das Modul FHEM::HTTPMOD::Utils installiert werden. Darin sind die Funktionen, die nicht nur HTTPMOD sondern auch andere meiner Module verwenden. Die Datei sollte in lib/FHEM/HTTPMOD als Utils.pm liegen.

Gruss
   Stefan

EDIT 29.8.2020: angehängtes Modul gelöscht, neuere Version in späterem Post.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 21 August 2020, 06:31:18
Hallo Stefan,

was genau muss ich tun?
Diese Schritte denke ich, sind klar:
update all
Sichern von 98_HTTPMOD.pm
Kopieren der neuen 98_HTTPMOD.pm in ./FHEM
shutdown restart

Wie teste ich? Nur schauen, ob alle meine HTTPMOD-Devices das erwartungsgemäße Verhalten zeigen? Oder auf was muss ich genauer achten?

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 August 2020, 07:32:45
Hallo Gisbert,

Ich würde einfach nur schauen ob alles wie vorher funktioniert, alle Werte korrekt aktualisiert werden, ggf. get und set klappen etc.

Gruss / vielen Dank
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 21 August 2020, 09:12:33
Hallo Stefan,

da stimmt noch was Gravierendes nicht.
Die HTTPMOD-Devices sind noch als Definitionen vorhanden, sie tauchen aber nirgends in den zugewiesenen Räumen auf, auch nicht in unsorted.
Ich habe das alte HTTPMOD-Modul wieder geladen.

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 21 August 2020, 09:20:49
Hallo Stefan,

was ist mit
Zitatpackage FHEM::HTTPMOD::Utils
in Utils.pm gemeint?
Muss ich das aktiv installieren, und wenn ja wie?

Viele Grüße Gisbert

Edit: update in der Fhem-Konsole und shutdown restart hatte ich durchgeführt. Die Datei Utils.pm liegt im beschriebenen Ordner.
Edit2: Unter "Own modules and helper files" in der Fhem-Webseite ist mir der Eintrag "98_FhemTestUtils.pm" aufgefallen, den ich bisher noch nicht als solchen registriert hatte.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 August 2020, 17:50:23
Hallo Gisbert,

vielen Dank für's Testen!
Am einfachsten wäre es für mich, wenn Du ein betroffenes HTTPMOD-Gerät auf verbose 5 setzen könntest und dann das Log beim Starten postest. Dann sollte einfach erkennbar sein, woran es liegt.
Die 98_FhemTestUtils sollten eigentlich nicht benötigt werden. Wo siehst Du die denn?

Gruss / Thanx
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 21 August 2020, 22:46:50
Hallo Stefan,

ich kann leider die nächsten Tage nicht testen. Falls in der Zwischenzeit niemand sonst weitermacht, komme ich erst gegen Ende der nächste Woche dazu. Die 98_FhemTestUtils.pm wird in der Liste angezeigt, in der auch 99_myUtils.pm liegt.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 21 August 2020, 23:14:26
Bei mir stürzt Fhem ab mit:
Undefined subroutine &FHEM::HTTPMOD::Utils::ValidExpr called at ./FHEM/98_HTTPMOD.pm line 492, <$fh> line 233.

obwohl Utils.pm in ./lib/FHEM/HTTPMOD liegt.

(unter Windows - mein Test-Fhem)

(ActiveState Perl
This is perl 5, version 26, subversion 3 (v5.26.3) built for MSWin32-x64-multi-thread)

EDIT: ich habe am Anfang gedacht, dass meine Perl Version irgendwie mit packages und exports nicht funktioniert. Aber nein, das Modul Utils wird richtig geladen. Nur... die Funktion existiert nirgendwo.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 22 August 2020, 01:58:54
Hab die Zeile auskommentiert, und weiter getestet.

Folgendes HTTPMOD funktioniert nicht mehr:

List:
defmod GeoTest HTTPMOD none 0
attr GeoTest enableControlSet 1
attr GeoTest get01Name Tag01
attr GeoTest get01Poll 1
attr GeoTest get01Regex (?s)Zeit auswählen<br>(?<Tag01_WochenTag>[A-Za-z]+).-.(?<Tag01_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag01_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag01_12Uhr>.*?)<\/td>
attr GeoTest get01Replacement01Value {strftime("%d.%m.%Y", localtime( time))}
attr GeoTest get02Name Tag02
attr GeoTest get02Poll 1
attr GeoTest get02Regex (?s)Zeit auswählen<br>(?<Tag02_WochenTag>[A-Za-z]+).-.(?<Tag02_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag02_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag02_12Uhr>.*?)<\/td>
attr GeoTest get02Replacement01Value {strftime("%d.%m.%Y", localtime(time + 86400))}
attr GeoTest get03Name Tag03
attr GeoTest get03Poll 1
attr GeoTest get03Regex (?s)Zeit auswählen<br>(?<Tag03_WochenTag>[A-Za-z]+).-.(?<Tag03_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag03_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag03_12Uhr>.*?)<\/td>
attr GeoTest get03Replacement01Value {strftime("%d.%m.%Y", localtime( time + 2*86400))}
attr GeoTest get04Name Tag04
attr GeoTest get04Poll 1
attr GeoTest get04Regex (?s)Zeit auswählen<br>(?<Tag04_WochenTag>[A-Za-z]+).-.(?<Tag04_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag04_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag04_12Uhr>.*?)<\/td>
attr GeoTest get04Replacement01Value {strftime("%d.%m.%Y", localtime( time + 3*86400))}
attr GeoTest get05Name Tag05
attr GeoTest get05Poll 1
attr GeoTest get05Regex (?s)Zeit auswählen<br>(?<Tag05_WochenTag>[A-Za-z]+).-.(?<Tag05_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag05_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag05_12Uhr>.*?)<\/td>
attr GeoTest get05Replacement01Value {strftime("%d.%m.%Y", localtime( time + 4*86400))}
attr GeoTest get06Name Tag06
attr GeoTest get06Poll 1
attr GeoTest get06Regex (?s)Zeit auswählen<br>(?<Tag06_WochenTag>[A-Za-z]+).-.(?<Tag06_Datum>[0-9\.]{10}).*?<td>09:15<\/td><td>(?<Tag06_09Uhr>.*?)<\/td>.*?<td>12:15<\/td><td>(?<Tag06_12Uhr>.*?)<\/td>
attr GeoTest get06Replacement01Value {strftime("%d.%m.%Y", localtime( time + 5*86400))}
attr GeoTest getURL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY
attr GeoTest replacement01Mode expression
attr GeoTest replacement01Regex %%date%%
attr GeoTest verbose 5


Log (Teil):
2020.08.22 01:31:11 5: GeoTest: set called with reread
2020.08.22 01:31:11 4: GeoTest: GetUpdate called (reread)
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag01 (01)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag01
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get01 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 0
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY
2020.08.22 01:31:11 3: GeoTest: Replacement 01 with expression {strftime("%d.%m.%Y", localtime( time))} created warning: Use of uninitialized value in substitution iterator at ./FHEM/98_HTTPMOD.pm line 870.

2020.08.22 01:31:11 5: GeoTest: Replace: match for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))}, input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, result is https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue is using Cookie PHPSESSID with path / and Value 79l0qonmm59gb3am7u9oo5ha8i (key PHPSESSID;/, destination path is /CAL/anmeldung.php?date=&CALID=ASCHYBY)
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue is adding Cookie header: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i
2020.08.22 01:31:11 4: GeoTest: HandleSendQueue sends get01 with timeout 2 to https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY, No Data,

header: Cookie: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i
2020.08.22 01:31:11 5: HttpUtils url=https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag02 (02)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag02
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get02 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 0
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag03 (03)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag03
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get03 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 1
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 2
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag04 (04)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag04
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get04 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 2
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 3
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag05 (05)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag05
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get05 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 3
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 4
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 5: GeoTest: GetUpdate checks if poll required for Tag06 (06)
2020.08.22 01:31:11 4: GeoTest: GetUpdate will request Tag06
2020.08.22 01:31:11 5: GeoTest: AddToQueue adds type get06 to URL https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, no data, no headers, retry 0, initial queue len: 4
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 5
2020.08.22 01:31:11 5: GeoTest: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 01:31:11 4: IP: geocache-planer.de -> 81.169.145.86
2020.08.22 01:31:11 5: HttpUtils request header:
GET /CAL/anmeldung.php?date=&CALID=ASCHYBY HTTP/1.0

Host: geocache-planer.de

User-Agent: fhem

Accept-Encoding: gzip,deflate

Cookie: PHPSESSID=79l0qonmm59gb3am7u9oo5ha8i


2020.08.22 01:31:11 4: https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY: HTTP response code 200
2020.08.22 01:31:11 5: HttpUtils https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY: Got data, length: 5398
2020.08.22 01:31:11 5: HttpUtils response header:


Das Problem ist wahrscheinlich da:
2020.08.22 01:31:11 5: GeoTest: Replace called for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))} input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY

2020.08.22 01:31:11 3: GeoTest: Replacement 01 with expression {strftime("%d.%m.%Y", localtime( time))} created warning: Use of uninitialized value in substitution iterator at ./FHEM/98_HTTPMOD.pm line 870.

2020.08.22 01:31:11 5: GeoTest: Replace: match for type get01, regex (?^:%%date%%), mode expression, value {strftime("%d.%m.%Y", localtime( time))}, input: https://geocache-planer.de/CAL/anmeldung.php?date=%%date%%&CALID=ASCHYBY, result is https://geocache-planer.de/CAL/anmeldung.php?date=&CALID=ASCHYBY


Da er das Datum nicht ersetzt, werden danach natürlich keine Readings extrahiert.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 August 2020, 10:57:52
Vielen Dank!

Hab die replacement-Fehler identifiziert, neue Version ist auf dem Weg :-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 22 August 2020, 11:38:06
Wenn Du dabei bist, vergiss die ValidExpr Funktion nicht ;)

Noch ein HTTPMOD das nicht mehr funktioniert. Bringt Fhem zum Abstürz.
defmod Gezeiten_Windfinder HTTPMOD https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid 0
attr Gezeiten_Windfinder enableControlSet 1
attr Gezeiten_Windfinder reAuthRegex UNAUTHORIZED
attr Gezeiten_Windfinder reading01Name HW_Tag
attr Gezeiten_Windfinder reading01OExpr substr($val,4,2)
attr Gezeiten_Windfinder reading01Regex dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high.*?dtl":".{5}(.{5}).{15}","tp":"high
attr Gezeiten_Windfinder reading02Name HW_Zeit
attr Gezeiten_Windfinder reading02Regex dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high.*?dtl":".{11}(.{5}).{9}","tp":"high
attr Gezeiten_Windfinder reading03Name HW_Level
attr Gezeiten_Windfinder reading03Regex dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"high","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder reading04Name NW_Tag
attr Gezeiten_Windfinder reading04Regex dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low.*?dtl":".{5}(.{5}).{15}","tp":"low
attr Gezeiten_Windfinder reading05Name NW_Zeit
attr Gezeiten_Windfinder reading05Regex dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low.*?dtl":".{11}(.{5}).{9}","tp":"low
attr Gezeiten_Windfinder reading06Name NW_Level
attr Gezeiten_Windfinder reading06Regex dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?dtl":".*?,"tp":"low","th":([0-9].[0-9]?[0-9]?).*?
attr Gezeiten_Windfinder room ,HTTPMODs
attr Gezeiten_Windfinder showBody 0
attr Gezeiten_Windfinder sid01IdRegex window.API_TOKEN = '(.*?)'
attr Gezeiten_Windfinder sid01URL https://de.windfinder.com/tide/dangast
attr Gezeiten_Windfinder verbose 5


Log:
2020.08.22 11:27:33 5: Gezeiten_Windfinder: set called with reread
2020.08.22 11:27:33 4: Gezeiten_Windfinder: GetUpdate called (reread)
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue adds type update to URL https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, no data, no headers, retry 0, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 11:27:33 4: Gezeiten_Windfinder: HandleSendQueue sends update with timeout 2 to https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, No Data, No Header
2020.08.22 11:27:33 5: HttpUtils url=https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid
2020.08.22 11:27:33 4: IP: api.windfinder.com -> 54.171.75.14
2020.08.22 11:27:33 5: HttpUtils request header:
GET /v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid HTTP/1.0

Host: api.windfinder.com

User-Agent: fhem

Accept-Encoding: gzip,deflate


2020.08.22 11:27:33 4: https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid: HTTP response code 401
2020.08.22 11:27:33 5: HttpUtils https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid: Got data, length: 124
2020.08.22 11:27:33 5: HttpUtils response header:
HTTP/1.1 401 UNAUTHORIZED

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: application/json

Content-Length: 124

Connection: close

Cache-Control: no-cache, no-store, must-revalidate

Pragma: no-cache

Expires: 0

Access-Control-Allow-Origin: *
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Read callback: request type was update retry 0,

header: HTTP/1.1 401 UNAUTHORIZED

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: application/json

Content-Length: 124

Connection: close

Cache-Control: no-cache, no-store, must-revalidate

Pragma: no-cache

Expires: 0

Access-Control-Allow-Origin: *, body length 124
2020.08.22 11:27:33 5: Gezeiten_Windfinder: Read callback: body

{"status":401,"type":"Authorization error","code":"#40130","message":"Invalid request token","payload":{"method":"WF-AUTH"}}
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Read found no charset header (bodyDecode was set to auto)
2020.08.22 11:27:33 5: Gezeiten_Windfinder: GetCookies is looking for Cookies
2020.08.22 11:27:33 5: Gezeiten_Windfinder: ExtractSid called, context reading, num 0
2020.08.22 11:27:33 4: Gezeiten_Windfinder: checking for redirects, code=401, ignore=0
2020.08.22 11:27:33 4: Gezeiten_Windfinder: no redirects to handle
2020.08.22 11:27:33 5: Gezeiten_Windfinder: Read callback sets LAST_REQUEST to update
2020.08.22 11:27:33 5: Gezeiten_Windfinder: CheckAuth is checking buffer with ReAuthRegex (?^:UNAUTHORIZED)
2020.08.22 11:27:33 4: Gezeiten_Windfinder: CheckAuth decided new authentication required
2020.08.22 11:27:33 4: Gezeiten_Windfinder: Auth called with Steps: 01
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue prepends type auth01 to URL https://de.windfinder.com/tide/dangast, no data, no headers, retry 0, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::DoAuth, qlen = 1
2020.08.22 11:27:33 4: Gezeiten_Windfinder: HandleSendQueue sends auth01 with timeout 2 to https://de.windfinder.com/tide/dangast, No Data, No Header
2020.08.22 11:27:33 5: HttpUtils url=https://de.windfinder.com/tide/dangast
2020.08.22 11:27:33 5: Gezeiten_Windfinder: AddToQueue adds type update to URL https://api.windfinder.com/v2/spots/de1729/tides/?limit=-1&customer=wfweb&version=1.0&token=$sid, no data, no headers, retry 1, initial queue len: 0
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.08.22 11:27:33 5: Gezeiten_Windfinder: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.08.22 11:27:33 4: Gezeiten_Windfinder: CheckAuth requeued request update after auth, retryCount 0 ...
2020.08.22 11:27:33 4: IP: de.windfinder.com -> 54.171.75.14
2020.08.22 11:27:34 5: HttpUtils request header:
GET /tide/dangast HTTP/1.0

Host: de.windfinder.com

User-Agent: fhem

Accept-Encoding: gzip,deflate


2020.08.22 11:27:34 4: https://de.windfinder.com/tide/dangast: HTTP response code 200
2020.08.22 11:27:34 5: HttpUtils https://de.windfinder.com/tide/dangast: Got data, length: 61432
2020.08.22 11:27:34 5: HttpUtils response header:
HTTP/1.1 200 OK

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Expires: Sat, 22 Aug 2020 09:41:30 GMT

Strict-Transport-Security: max-age=31536000

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Encoding: gzip
2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read callback: request type was auth01 retry 0,

header: HTTP/1.1 200 OK

Server: nginx

Date: Sat, 22 Aug 2020 09:27:34 GMT

Content-Type: text/html; charset=utf-8

Connection: close

Vary: Accept-Encoding

Expires: Sat, 22 Aug 2020 09:41:30 GMT

Strict-Transport-Security: max-age=31536000

X-Frame-Options: SAMEORIGIN

X-Xss-Protection: 1; mode=block

X-Content-Type-Options: nosniff

Content-Encoding: gzip, body length 61432
2020.08.22 11:27:34 5: Gezeiten_Windfinder: Read callback: body


<!--



__        __                      _     _      _             _
\ \      / /__    __ _ _ __ ___  | |__ (_)_ __(_)_ __   __ _| |
  \ \ /\ / / _ \  / _` | '__/ _ \ | '_ \| | '__| | '_ \ / _` | |
   \ V  V /  __/ | (_| | | |  __/ | | | | | |  | | | | | (_| |_|
    \_/\_/ \___|  \__,_|_|  \___| |_| |_|_|_|  |_|_| |_|\__, (_)
                                                        |___/   

          > > > > > www.windfinder.com/careers  < < < < <




-->
<!DOCTYPE html>
<html class="no-js" lang="de">
.................... (Inhalt gelöscht sonst zu gross ..Die Daten sind aber da ............................
</html>

2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read found charset header and set decoding to utf-8 (bodyDecode was set to auto)
2020.08.22 11:27:34 4: Gezeiten_Windfinder: Read is decoding the response body as utf-8
2020.08.22 11:27:34 5: Gezeiten_Windfinder: GetCookies is looking for Cookies
2020.08.22 11:27:34 5: Gezeiten_Windfinder: ExtractSid called, context sid, num 01
2020.08.22 11:27:34 4: Gezeiten_Windfinder: ExtractSid set sid to 6c15759a6334737084e0ec731068b614
2020.08.22 11:27:34 4: Gezeiten_Windfinder: checking for redirects, code=200, ignore=0
2020.08.22 11:27:34 4: Gezeiten_Windfinder: no redirects to handle
2020.08.22 11:27:34 5: Gezeiten_Windfinder: Read callback sets LAST_REQUEST to auth01
Undefined subroutine &main::HandleSendQueue called at fhem.pl line 3349.


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 August 2020, 17:16:08
So, hier eine neue Version mit hoffentlich weniger Fehlern ;-)
Das mit dem eigenen Namespace hat durchaus einige Stolperfallen, insbesondere wenn Anwender Perl-Expressions nutzen können.
Ich hoffe ich habe jetzt alle relevanten Funktionen importiert ...

Gruss
   Stefan

EDIT 29.8.2020: angehängtes Modul gelöscht, neuere Version in späterem Post.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 August 2020, 18:08:02
Hallo,

anbei nochmal eine neuere Version mit der Bitte um Feedback, ob damit noch alles bei Euch läuft.
Falls es Probleme gibt, wäre ein Auszug aus dem Log mit verbose 5 sehr hilfreich.
Wenn es keine Probleme gibt, würde ich die neue Version am nächsten Wochenende einchecken.

Gruß / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 29 August 2020, 19:54:16
Hallo Stefan,

läuft anscheinend :) :), hab zur Sicherheit auch von einem Device den log-Auszug mit verbose 5 drangehängt. Da kommt soviel, dass es mein Handy nicht gepackt hat ;), aber am PC kann man es dann problemlos rauskopieren. Vielleicht erkennst du ja noch etwas, was noch besser, schöner, neuer, ... sein sollte. Bin mir nicht 100% sicher, ob ich einmal oder zweimal reread gesetzt hatte; es müsste aber wahrscheinlich nur einmal sein, passt auch zu den Zeitstempeln.

In Code-Tags konnte man das Ganze nicht eintragen, da wurde was abgeschnitten, oder es führte zu Fehlern, bei dem man einen Admin informieren sollte.

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 August 2020, 18:50:10
Das encode/decode? scheint anders zu funktionieren.

defmod bundesligaTabelle HTTPMOD http://www.transfermarkt.de/2-bundesliga/tabelle/wettbewerb/L2 0
attr bundesligaTabelle userattr reading01Name reading01Regex reading02Name reading02Regex
attr bundesligaTabelle enableControlSet 1
attr bundesligaTabelle enableCookies 1
attr bundesligaTabelle enforceGoodReadingNames 1
attr bundesligaTabelle handleRedirects 1
attr bundesligaTabelle reading01Name platz01Verein
attr bundesligaTabelle reading01Regex (?s)class="rechts hauptlink">1<.*?alt="(.*?)" class


Mit der alten Version (07.02.2020)
   READINGS:
     2020-08-30 18:42:54   platz01Verein   Fortuna Düsseldorf

Mit der neuen:
   READINGS:
     2020-08-30 18:46:23   platz01Verein   Fortuna D�sseldorf
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 31 August 2020, 16:00:22
Hallo,

Ja, das bodyDecode-Feature hat bisher nie funktioniert.
Für die neue Version habe ich einige automatisierte Tests eingeführt und dabei ist das aufgefallen.
Jetzt funktioniert bodyDecode, was jedoch zur Folge hat, dass der charset-Header einer HTTP-Response erkannt wird und Response-Daten automatisch mit decode in das interne Format von Perl konvertiert werden.
Bisher stand das zwar im Log, war aber effektiv wirkungslos.
Entsprechend muss man ein readingEncode utf8 setzen, um die Readings wieder in utf8 zu bekommen.
Oder man setzt bodyDecode auf none (der Default ist auto, dann wird der charset-Header verwendet).

Ich bin mir nicht sicher, womit ich weniger Ärger verursache. Den Bug wie bisher belassen, per Default auch readingEncode auf utf8 setzen oder bodyDecode nicht anwenden, wenn der Response-Body als utf8 kommt ...
Alles kann irgendwo Probleme machen, insbesondere bei alten Perl-Versionen mit Memory Leaks. Deshalb hatte ich das mit bodyDecode auch mal eingebaut.

Am saubersten wäre es nach meinem Verständnis, wenn die eingelesenen Daten tatsächlich per Default zunächst dekodiert werden und wenn dann die Readings ebenso per Default als utf8 encoded werden.

Wie seht Ihr das?

Gruß
    Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 31 August 2020, 17:25:17
Wenn Du ja die Möglichkeit hast, bei automatischen bodyDecode die Readings dann standardmässig wieder zu encoden, wird es keine Regression geben, und das wird Problemen bei anderen lösen, die bisher bodydecode nicht vernünftig benutzen konnten.

Wenn ich beim HTTPMOD oben reading01Encode utf8 noch dazu definiere, geht es ja.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 31 August 2020, 17:56:13
Hallo Ihr Spezialisten,

ich habe da eine für mich etwas komplexe Anmeldeprozedur implementiert, die Euch wahrscheinlich die Haare zu berge steigen lässt :-)
Deshalb stelle ich das nun zur Diskussion und hoffe auf Vereinfachungen. Es geht also erst mal um HTTPMOD.

Im Hintergrund gibt es zwei Python Skripte, die momentan die Schlüssel generieren. Die hätte ich liebend gerne weg und versuche mich auch an einer Perl Migration...

Das Device mit der mehrstufigen Anmeldung wird über einige userreadings von Step zu Step getriggert.
Weiterhin wird auch bereits eine Anmeldenotwendigkeit erkannt und dann mit /auth/start begonnen. Hier kann ich momentan nicht den original HTTP request requeuen, weil es ansonsten mit den ganzen zwischenschritten und Python Calls nicht passt. Die Python Skripte füllen asyncon die auth_* readings, worauf dann die userreadings reagieren. Ich liste auch mal Beispiel auth_* readings im nächsten Listing an und ein verbose 5 Log kommt auch noch.

defmod PV_Anlage_1_API HTTPMOD http://%IP-Address_Plenticore%/auth/me 0

attr PV_Anlage_1_API DbLogExclude .*
attr PV_Anlage_1_API authRetries 1
attr PV_Anlage_1_API dontRequeueAfterAuth 1
attr PV_Anlage_1_API enableControlSet 1
attr PV_Anlage_1_API enableCookies 1
attr PV_Anlage_1_API get01Data {"nonce": "%randomString64%","username": "user"}
attr PV_Anlage_1_API get01Name 01_/auth/start
attr PV_Anlage_1_API get01URL http://%IP-Address_Plenticore%/api/v1/auth/start
attr PV_Anlage_1_API get02Data {"transactionId": "%auth_transactionId%", "proof": "%auth_proof%"}
attr PV_Anlage_1_API get02Name 02_/auth/finish
attr PV_Anlage_1_API get02URL http://%IP-Address_Plenticore%/api/v1/auth/finish
attr PV_Anlage_1_API get03Data {"transactionId": "%auth_transactionId%", "iv": "%auth_iv%", "tag": "%auth_authtag%", "payload": "%auth_payload%"}
attr PV_Anlage_1_API get03Name 03_/auth/create_session
attr PV_Anlage_1_API get03URL http://%IP-Address_Plenticore%/api/v1/auth/create_session
attr PV_Anlage_1_API get04Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get04Name 04_/auth/me
attr PV_Anlage_1_API get04URL http://%IP-Address_Plenticore%/api/v1/auth/me
attr PV_Anlage_1_API get05Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get05Name 05_/info/version
attr PV_Anlage_1_API get05URL http://%IP-Address_Plenticore%/api/v1/info/version
attr PV_Anlage_1_API get06Name 06_/auth/logout
attr PV_Anlage_1_API get06URL http://%IP-Address_Plenticore%/api/v1/auth/logout
attr PV_Anlage_1_API get20Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get20Name 20_/processdata/scb_statistic_EnergyFlow
attr PV_Anlage_1_API get20URL http://%IP-Address_Plenticore%/api/v1/processdata/scb:statistic:EnergyFlow
attr PV_Anlage_1_API get21Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get21Name 21_/modules_list
attr PV_Anlage_1_API get21URL http://%IP-Address_Plenticore%/api/v1/modules
attr PV_Anlage_1_API get22Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get22Name 22_SmartBatteryControl
attr PV_Anlage_1_API get22URL http://%IP-Address_Plenticore%/api/v1/settings/devices:local/Battery:SmartBatteryControl:Enable
attr PV_Anlage_1_API getHeader01 Accept-Encoding: gzip,deflate
attr PV_Anlage_1_API getHeader02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr PV_Anlage_1_API group PV Eigenverbrauch
attr PV_Anlage_1_API icon sani_solar
attr PV_Anlage_1_API reAuthRegex "authenticated":false|"processdata":\[\]
attr PV_Anlage_1_API reading0100JSON anonymous
attr PV_Anlage_1_API reading0100Name auth_me_anonymous
attr PV_Anlage_1_API reading0101JSON role
attr PV_Anlage_1_API reading0101Name auth_me_role
attr PV_Anlage_1_API reading0102JSON active
attr PV_Anlage_1_API reading0102Name auth_me_active
attr PV_Anlage_1_API reading0103JSON locked
attr PV_Anlage_1_API reading0103Name auth_me_locked
attr PV_Anlage_1_API reading0104JSON authenticated
attr PV_Anlage_1_API reading0104Name auth_me_authenticated
attr PV_Anlage_1_API reading0105JSON salt
attr PV_Anlage_1_API reading0105Name auth_salt
attr PV_Anlage_1_API reading0106JSON transactionId
attr PV_Anlage_1_API reading0106Name auth_transactionId
attr PV_Anlage_1_API reading0107JSON rounds
attr PV_Anlage_1_API reading0107Name auth_rounds
attr PV_Anlage_1_API reading0108JSON nonce
attr PV_Anlage_1_API reading0108Name auth_nonce
attr PV_Anlage_1_API reading0109JSON token
attr PV_Anlage_1_API reading0109Name auth_token
attr PV_Anlage_1_API reading0110JSON message
attr PV_Anlage_1_API reading0111JSON signature
attr PV_Anlage_1_API reading0111Name auth_signature
attr PV_Anlage_1_API reading0112JSON sessionId
attr PV_Anlage_1_API reading0112Name auth_sessionId
attr PV_Anlage_1_API reading0200JSON api_version
attr PV_Anlage_1_API reading0200Name info_api_version
attr PV_Anlage_1_API reading0201JSON sw_version
attr PV_Anlage_1_API reading0201Name info_sw_version
attr PV_Anlage_1_API reading0202JSON name
attr PV_Anlage_1_API reading0202Name info_name
attr PV_Anlage_1_API reading0203JSON hostname
attr PV_Anlage_1_API reading0203Name info_hostname
attr PV_Anlage_1_API reading2001JSON 01_processdata_01_value
attr PV_Anlage_1_API reading2001Name Statistic_Autarky_Day
attr PV_Anlage_1_API reading2002JSON 01_processdata_02_value
attr PV_Anlage_1_API reading2002Name Statistic_Autarky_Month
attr PV_Anlage_1_API reading2003JSON 01_processdata_03_value
attr PV_Anlage_1_API reading2003Name Statistic_Autarky_Total
attr PV_Anlage_1_API reading2004JSON 01_processdata_04_value
attr PV_Anlage_1_API reading2004Name Statistic_Autarky_Year
attr PV_Anlage_1_API reading2011JSON 01_processdata_05_value
attr PV_Anlage_1_API reading2011Name Statistic_CO2Saving_Day
attr PV_Anlage_1_API reading2012JSON 01_processdata_06_value
attr PV_Anlage_1_API reading2012Name Statistic_CO2Saving_Month
attr PV_Anlage_1_API reading2013JSON 01_processdata_08_value
attr PV_Anlage_1_API reading2013Name Statistic_CO2Saving_Year
attr PV_Anlage_1_API reading2021JSON 01_processdata_09_value
attr PV_Anlage_1_API reading2021Name Statistic_EnergyHome_Day
attr PV_Anlage_1_API reading2022JSON 01_processdata_10_value
attr PV_Anlage_1_API reading2022Name Statistic_EnergyHome_Month
attr PV_Anlage_1_API reading2023JSON 01_processdata_11_value
attr PV_Anlage_1_API reading2023Name Statistic_EnergyHome_Total
attr PV_Anlage_1_API reading2024JSON 01_processdata_12_value
attr PV_Anlage_1_API reading2024Name Statistic_EnergyHome_Year
attr PV_Anlage_1_API reading2031JSON 01_processdata_13_value
attr PV_Anlage_1_API reading2031Name Statistic_EnergyHomeBat_Day
attr PV_Anlage_1_API reading2032JSON 01_processdata_14_value
attr PV_Anlage_1_API reading2032Name Statistic_EnergyHomeBat_Month
attr PV_Anlage_1_API reading2033JSON 01_processdata_15_value
attr PV_Anlage_1_API reading2033Name Statistic_EnergyHomeBat_Total
attr PV_Anlage_1_API reading2034JSON 01_processdata_16_value
attr PV_Anlage_1_API reading2034Name Statistic_EnergyHomeBat_Year
attr PV_Anlage_1_API reading2041JSON 01_processdata_17_value
attr PV_Anlage_1_API reading2041Name Statistic_EnergyHomeGrid_Day
attr PV_Anlage_1_API reading2042JSON 01_processdata_18_value
attr PV_Anlage_1_API reading2042Name Statistic_EnergyHomeGrid_Month
attr PV_Anlage_1_API reading2043JSON 01_processdata_19_value
attr PV_Anlage_1_API reading2043Name Statistic_EnergyHomeGrid_Total
attr PV_Anlage_1_API reading2044JSON 01_processdata_20_value
attr PV_Anlage_1_API reading2044Name Statistic_EnergyHomeGrid_Year
attr PV_Anlage_1_API reading2051JSON 01_processdata_21_value
attr PV_Anlage_1_API reading2051Name Statistic_EnergyHomePv_Day
attr PV_Anlage_1_API reading2052JSON 01_processdata_22_value
attr PV_Anlage_1_API reading2052Name Statistic_EnergyHomePv_Month
attr PV_Anlage_1_API reading2053JSON 01_processdata_23_value
attr PV_Anlage_1_API reading2053Name Statistic_EnergyHomePv_Total
attr PV_Anlage_1_API reading2054JSON 01_processdata_24_value
attr PV_Anlage_1_API reading2054Name Statistic_EnergyHomePv_Year
attr PV_Anlage_1_API reading2061JSON 01_processdata_25_value
attr PV_Anlage_1_API reading2061Name Statistic_OwnConsumptionRate_Day
attr PV_Anlage_1_API reading2062JSON 01_processdata_26_value
attr PV_Anlage_1_API reading2062Name Statistic_OwnConsumptionRate_Month
attr PV_Anlage_1_API reading2063JSON 01_processdata_27_value
attr PV_Anlage_1_API reading2063Name Statistic_OwnConsumptionRate_Total
attr PV_Anlage_1_API reading2064JSON 01_processdata_28_value
attr PV_Anlage_1_API reading2064Name Statistic_OwnConsumptionRate_Year
attr PV_Anlage_1_API reading2071JSON 01_processdata_29_value
attr PV_Anlage_1_API reading2071Name Statistic_Yield_Day
attr PV_Anlage_1_API reading2072JSON 01_processdata_30_value
attr PV_Anlage_1_API reading2072Name Statistic_Yield_Month
attr PV_Anlage_1_API reading2073JSON 01_processdata_31_value
attr PV_Anlage_1_API reading2073Name Statistic_Yield_Total
attr PV_Anlage_1_API reading2074JSON 01_processdata_32_value
attr PV_Anlage_1_API reading2074Name Statistic_Yield_Year
attr PV_Anlage_1_API replacement01Mode expression
attr PV_Anlage_1_API replacement01Regex %IP-Address_Plenticore%
attr PV_Anlage_1_API replacement01Value {ReadingsVal("PV_Anlage_1_config","IP-Address_Plenticore","")}
attr PV_Anlage_1_API replacement02Mode reading
attr PV_Anlage_1_API replacement02Regex %auth_transactionId%
attr PV_Anlage_1_API replacement02Value auth_transactionId
attr PV_Anlage_1_API replacement03Mode reading
attr PV_Anlage_1_API replacement03Regex %auth_proof%
attr PV_Anlage_1_API replacement03Value auth_proof
attr PV_Anlage_1_API replacement04Mode expression
attr PV_Anlage_1_API replacement04Regex %randomString64%
attr PV_Anlage_1_API replacement04Value {my $NAME = "PV_Anlage_1_API" ;;;;fhem("deletereading ".$NAME." message");;;;fhem("deletereading ".$NAME." auth.*");;;;my @chars=('a'..'z','A'..'Z','0'..'9');; my $r;; foreach(1..16) {$r.=$chars[rand @chars];;};; fhem("setreading ".$NAME." auth_randomString64 ".$r);; $r;;}
attr PV_Anlage_1_API replacement05Mode reading
attr PV_Anlage_1_API replacement05Regex %auth_randomString64%
attr PV_Anlage_1_API replacement05Value auth_randomString64
attr PV_Anlage_1_API replacement06Mode reading
attr PV_Anlage_1_API replacement06Regex %auth_token%
attr PV_Anlage_1_API replacement06Value auth_token
attr PV_Anlage_1_API replacement07Mode reading
attr PV_Anlage_1_API replacement07Regex %auth_signature%
attr PV_Anlage_1_API replacement07Value auth_signature
attr PV_Anlage_1_API replacement08Mode reading
attr PV_Anlage_1_API replacement08Regex %auth_authtag%
attr PV_Anlage_1_API replacement08Value auth_authtag
attr PV_Anlage_1_API replacement09Mode reading
attr PV_Anlage_1_API replacement09Regex %auth_payload%
attr PV_Anlage_1_API replacement09Value auth_payload
attr PV_Anlage_1_API replacement10Mode reading
attr PV_Anlage_1_API replacement10Regex %auth_iv%
attr PV_Anlage_1_API replacement10Value auth_iv
attr PV_Anlage_1_API replacement11Mode reading
attr PV_Anlage_1_API replacement11Regex %auth_sessionId%
attr PV_Anlage_1_API replacement11Value auth_sessionId
attr PV_Anlage_1_API room Strom->Photovoltaik
attr PV_Anlage_1_API showBody 1
attr PV_Anlage_1_API showError 1
attr PV_Anlage_1_API sid01Data {"nonce": "%randomString64%","username": "user"}
attr PV_Anlage_1_API sid01ParseResponse 1
attr PV_Anlage_1_API sid01URL http://%IP-Address_Plenticore%/api/v1/auth/start
attr PV_Anlage_1_API sidHeader01 Accept-Encoding: gzip,deflate
attr PV_Anlage_1_API sidHeader02 Content-type: application/json, Accept: application/json, Connection: keep-alive
attr PV_Anlage_1_API sortby 02
attr PV_Anlage_1_API timeout 5
attr PV_Anlage_1_API userReadings auth_Step1_Message:auth_nonce.* {system("/usr/bin/python3 /opt/fhem/python/bin/plenticore_auth_finish.py ".ReadingsVal("PV_Anlage_1_config","IP-Address_FHEM","")." ".ReadingsVal("$NAME","auth_randomString64","")." ".ReadingsVal("$NAME","auth_nonce","")." ".ReadingsVal("$NAME","auth_salt","")." ".ReadingsVal("$NAME","auth_rounds","")." &");;;; "Prepare auth_finish started with auth_nonce ".ReadingsVal("$NAME","auth_nonce","")},\
\
auth_Step2_Message:auth_proof.* { fhem("get ".$NAME." 02_/auth/finish") ;;;; "HTTP Request 02_/auth/finish with auth_proof ".ReadingsVal("$NAME","auth_proof","")},\
\
auth_Step3_Message:auth_token.* {system("/usr/bin/python3 /opt/fhem/python/bin/plenticore_auth_session.py ".ReadingsVal("PV_Anlage_1_config","IP-Address_FHEM","")." ".ReadingsVal("$NAME","auth_randomString64","")." ".ReadingsVal("$NAME","auth_nonce","")." ".ReadingsVal("$NAME","auth_salt","")." ".ReadingsVal("$NAME","auth_rounds","")." ".ReadingsVal("$NAME","auth_token","")." &");;;; "Prepare auth_session started with auth_token ".ReadingsVal("$NAME","auth_token","")},\
\
auth_Step4_Message:auth_payload.* { fhem("get ".$NAME." 03_/auth/create_session") ;;;; "HTTP Request 03_/auth/create_session with auth_authtag ".ReadingsVal("$NAME","auth_authtag","")},\
\
auth_Step5_Message:auth_sessionId.* { fhem("get ".$NAME." 04_/auth/me") ;;;; "HTTP Request 04_/auth/me with auth_sessionId ".ReadingsVal("$NAME","auth_sessionId","")}
attr PV_Anlage_1_API verbose 0


Readings vom Login aus dem Verbose 5 Log im Anhang

setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_Step1_Message Prepare auth_finish started with auth_nonce p5NyrqY18ApsAfScCi7/T/EbIdL3kr5a
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_Step2_Message HTTP Request 02_/auth/finish with auth_proof XbY/r/bWVcymH/z+DY0SW0U7c45bx3eALRBkZo3O9Hk=
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_Step3_Message Prepare auth_session started with auth_token fa62e94ef9be096ba7ef64186464eb18600c77aa4e09f9524c7e6e9bebfd06d7
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_Step4_Message HTTP Request 03_/auth/create_session with auth_authtag tUw9M0yqFYE2Fzd0DZieLQ==
setstate PV_Anlage_1_API 2020-08-31 17:35:34 auth_Step5_Message HTTP Request 04_/auth/me with auth_sessionId e4977e08087e6746d3b838b086accd749ba2efcc1f158075b1cd19e8e7008de0
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_authtag tUw9M0yqFYE2Fzd0DZieLQ==
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_iv aIyU55mGYnpQF8ijDGKahQ==
setstate PV_Anlage_1_API 2020-08-31 17:35:35 auth_me_active 1
setstate PV_Anlage_1_API 2020-08-31 17:35:35 auth_me_anonymous 0
setstate PV_Anlage_1_API 2020-08-31 17:35:35 auth_me_authenticated 1
setstate PV_Anlage_1_API 2020-08-31 17:35:35 auth_me_locked 0
setstate PV_Anlage_1_API 2020-08-31 17:35:35 auth_me_role USER
setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_nonce p5NyrqY18ApsAfScCi7/T/EbIdL3kr5a
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_payload MRvXZiaZrX7LiH9H1IcPsFmJjotoMc07j9/+yyZHhYLvIds3ctU5+jmqx/OEVtYH13xGbRCVJwXwAc9+YUXM4w==
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_proof XbY/r/bWVcymH/z+DY0SW0U7c45bx3eALRBkZo3O9Hk=
setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_randomString64 p5NyrqY18ApsAfSc
setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_rounds 29000
setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_salt DbAC0R85jwF0rh+r
setstate PV_Anlage_1_API 2020-08-31 17:35:34 auth_sessionId e4977e08087e6746d3b838b086accd749ba2efcc1f158075b1cd19e8e7008de0
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_signature CWm0BWcJg7WEW9Cg7Osya0LL0lM2gw7Koo4H+S7APnM=
setstate PV_Anlage_1_API 2020-08-31 17:35:33 auth_token fa62e94ef9be096ba7ef64186464eb18600c77aa4e09f9524c7e6e9bebfd06d7
setstate PV_Anlage_1_API 2020-08-31 17:35:32 auth_transactionId 63ae48fd4da53c956299393c737b3696ccfeef1d768b4233bb96005e0f6b89da
setstate PV_Anlage_1_API 2020-08-30 16:34:36 info_api_version 0.2.0
setstate PV_Anlage_1_API 2020-08-30 16:34:36 info_hostname scb
setstate PV_Anlage_1_API 2020-08-30 16:34:36 info_name PUCK RESTful API
setstate PV_Anlage_1_API 2020-08-30 16:34:36 info_sw_version 01.15.04581


Ab nun kann man bei Übergabe der auth_sessionId beliebig viele Abfragen durchführen.
Verbose 5 log mit einem initialen Login ist im Anhang.

Meine Hauptfrage ist nun, kann ich das noch vereinfachen?
Habe ich irgend welche Mechanismen in der HTTPMOD Attributen übersehen?

Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 01 September 2020, 17:28:25
Und nochmals hallo,

ich habe noch ein weiteres Problem mit der API vom letzten Post.
Es gibt in der undokumentierten Auflistung der Request auch explizit API Aufrufe mit "POST" anstelle von "GET", wie kann ich das denn beeinflussen?

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 02 September 2020, 00:28:28
Deine getNN... sind schon alle POST Requests

Zitat von: CommandRef(get|set)[0-9]*Data
optional data to be sent to the device as POST data when the get oer set command is executed. if this attribute is specified, an HTTP POST method will be sent instead of an HTTP GET

set[0-9]*Method
HTTP Method (GET, POST or PUT) which shall be used for the set.

(get|set)[0-9]*NoData
can be used to override a more generic attribute that specifies POST data for all get commands. With NoData no data is sent and therefor the request will be an HTTP GET.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 02 September 2020, 09:54:11
Zitat von: amenomade am 02 September 2020, 00:28:28
Deine getNN... sind schon alle POST Requests
Vielen Dank, diese Attribute waren mir einfach nicht aufgefallen.
Dann muss da noch irgend ein anderer Syntax Fehler sein :-(
Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 03 September 2020, 19:04:16
Ich habe nun weiter getestet und rum probiert und meine einen Fehler gefunden zu haben. Es liegt wohl am Header, der beim POST wohl anders zusammen gesetzt wird.

EDIT: Ich vermisse bei allen requests den getHeader02 ???


# Das habe ich für alle requests gesetzt
attr PV_Anlage_1_API getHeader01 Accept-Encoding: gzip,deflate
attr PV_Anlage_1_API getHeader02 Content-type:application/json, Accept:application/json, Connection:keep-alive

# Dieser Header kommt dann bei einigen requests dazu
attr PV_Anlage_1_API get23Header authorization: Session %auth_sessionId%

# Das ist der betroffene request
attr PV_Anlage_1_API get23Data {"max":10,"language":"en-gb"}
attr PV_Anlage_1_API get23Name 23_/events/latest
attr PV_Anlage_1_API get23URL http://%IP-Address_Plenticore%/api/v1/events/latest

# Wenn ich nun den Header "getHeader02" für den betroffenen request explizit setze, dann geht es.
attr PV_Anlage_1_API get23Header2 Content-type:application/json, Accept:application/json, Connection:keep-alive

Hier das Lauffähige Log

2020.09.03 18:42:03.465 4: PV_Anlage_1_API: HandleSendQueue sends get23 with timeout 5 to http://192.168.178.18/api/v1/events/latest,
data: {"max":10,"language":"en-gb"},
header: authorization: Session 42ef55c276797818c0ebebc095a081cfefc01e7ae267c6eed27e8459c4a9170a
Content-type:application/json, Accept:application/json, Connection:keep-alive
2020.09.03 18:42:03.465 5: HttpUtils url=http://192.168.178.18/api/v1/events/latest
2020.09.03 18:42:03.465 4: IP: 192.168.178.18 -> 192.168.178.18
2020.09.03 18:42:03.468 5: HttpUtils request header:
POST /api/v1/events/latest HTTP/1.0
Host: 192.168.178.18
User-Agent: fhem
Accept-Encoding: gzip,deflate
authorization: Session 42ef55c276797818c0ebebc095a081cfefc01e7ae267c6eed27e8459c4a9170a
Content-type:application/json, Accept:application/json, Connection:keep-alive
Content-Length: 29

2020.09.03 18:42:03.671 4: http://192.168.178.18/api/v1/events/latest: HTTP response code 200
2020.09.03 18:42:03.671 5: HttpUtils http://192.168.178.18/api/v1/events/latest: Got data, length: 3367
2020.09.03 18:42:03.672 5: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx/1.15.2
Date: Thu, 03 Sep 2020 16:42:03 GMT
Content-Type: application/json
Content-Length: 3367
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: max-age=0, no-cache, no-store, must-revalidate
2020.09.03 18:42:03.672 4: PV_Anlage_1_API: Read callback: request type was get23 retry 0,
header: HTTP/1.1 200 OK
Server: nginx/1.15.2
Date: Thu, 03 Sep 2020 16:42:03 GMT
Content-Type: application/json
Content-Length: 3367
Connection: close
Access-Control-Allow-Origin: *
Cache-Control: max-age=0, no-cache, no-store, must-revalidate, body length 3367
2020.09.03 18:42:03.672 5: PV_Anlage_1_API: Read callback: body
[{"end_time":"2020-07-21T11:22:18","description":"Reduction of AC power due to external command or high grid frequency.","category":"info","code":5013,"is_active":false,"group":"Information","start_time":"2020-07-21T11:20:53","long_description":"Reduction of AC power due to external command or high grid frequency."},{"end_time":"2020-07-21T09:35:59","description":"Grid parameters are outside the permitted range. If the fault persists after a few minutes, please contact your installer or call our hotline.","category":"error","code":5096,"is_active":false,"group":"External grid fault","start_time":"2020-07-21T09:34:57","long_description":"Grid parameters are outside the permitted range. If the fault persists after a few minutes, please contact your installer or call our hotline."},{"end_time":"2020-07-20T18:01:23","description":"Reduction of AC power due to external command or high grid frequency.","category":"info","code":5013,"is_active":false,"group":"Information","start_time":"2020-07-20T17:58:57","long_description":"Reduction of AC power due to external command or high grid frequency."},{"end_time":"2020-07-20T18:00:50","description":"Energy meter cannot be read.\nPlease check the connection to the sensor.","category":"error","code":6006,"is_active":false,"group":"System fault","start_time":"2020-07-20T17:58:30","long_description":"Energy meter cannot be read.\nPlease check the connection to the sensor."},{"end_time":"2020-07-20T17:44:57","description":"Energy meter cannot be read.\nPlease check the connection to the sensor.","category":"error","code":6006,"is_active":false,"group":"System fault","start_time":"2020-07-20T17:42:22","long_description":"Energy meter cannot be read.\nPlease check the connection to the sensor."},{"end_time":"2020-07-20T17:28:54","description":"Energy meter cannot be read.\nPlease check the connection to the sensor.","category":"error","code":6006,"is_active":false,"group":"System fault","start_time":"2020-07-20T17:28:13","long_description":"Energy meter cannot be read.\nPlease check the connection to the sensor."},{"end_time":"2020-07-20T16:47:45","description":"Energy meter cannot be read.\nPlease check the connection to the sensor.","category":"error","code":6006,"is_active":false,"group":"System fault","start_time":"2020-07-20T16:47:26","long_description":"Energy meter cannot be read.\nPlease check the connection to the sensor."},{"end_time":"2020-07-20T17:44:54","description":"Reduction of AC power due to external command or high grid frequency.","category":"info","code":5013,"is_active":false,"group":"Information","start_time":"2020-07-20T16:44:38","long_description":"Reduction of AC power due to external command or high grid frequency."},{"end_time":"2020-07-20T17:21:38","description":"Reduction of AC power due to external command or high grid frequency.","category":"info","code":5013,"is_active":false,"group":"Information","start_time":"2020-07-20T16:44:38","long_description":"Reduction of AC power due to external command or high grid frequency."},{"end_time":"2020-07-20T16:44:48","description":"Energy meter cannot be read.\nPlease check the connection to the sensor.","category":"error","code":6006,"is_active":false,"group":"System fault","start_time":"2020-07-20T16:42:08","long_description":"Energy meter cannot be read.\nPlease check the connection to the sensor."}]

2020.09.03 18:42:03.672 4: PV_Anlage_1_API: Read found no charset header (bodyDecode was set to auto)


Und hier die Gegenprobe

2020.09.03 18:50:09.662 4: PV_Anlage_1_API: HandleSendQueue sends get23 with timeout 5 to http://192.168.178.18/api/v1/events/latest,
data: {"max":10,"language":"en-gb"},
header: authorization: Session 42ef55c276797818c0ebebc095a081cfefc01e7ae267c6eed27e8459c4a9170a
2020.09.03 18:50:09.662 5: HttpUtils url=http://192.168.178.18/api/v1/events/latest
2020.09.03 18:50:09.662 4: IP: 192.168.178.18 -> 192.168.178.18
2020.09.03 18:50:09.667 5: HttpUtils request header:
POST /api/v1/events/latest HTTP/1.0
Host: 192.168.178.18
User-Agent: fhem
Accept-Encoding: gzip,deflate
authorization: Session 42ef55c276797818c0ebebc095a081cfefc01e7ae267c6eed27e8459c4a9170a
Content-Length: 29
Content-Type: application/x-www-form-urlencoded

2020.09.03 18:50:09.702 4: http://192.168.178.18/api/v1/events/latest: HTTP response code 400
2020.09.03 18:50:09.702 5: HttpUtils http://192.168.178.18/api/v1/events/latest: Got data, length: 91
2020.09.03 18:50:09.703 5: HttpUtils response header:
HTTP/1.1 400 BAD REQUEST
Server: nginx/1.15.2
Date: Thu, 03 Sep 2020 16:50:09 GMT
Content-Type: application/json
Content-Length: 91
Connection: close
Access-Control-Allow-Origin: *
2020.09.03 18:50:09.703 4: PV_Anlage_1_API: Read callback: request type was get23 retry 0,
header: HTTP/1.1 400 BAD REQUEST
Server: nginx/1.15.2
Date: Thu, 03 Sep 2020 16:50:09 GMT
Content-Type: application/json
Content-Length: 91
Connection: close
Access-Control-Allow-Origin: *, body length 91
2020.09.03 18:50:09.703 5: PV_Anlage_1_API: Read callback: body
{"message":"Input payload validation failed","errors":{"":"None is not of type 'object'"}}

2020.09.03 18:50:09.703 4: PV_Anlage_1_API: Read found no charset header (bodyDecode was set to auto)


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 03 September 2020, 19:25:22
Hmm, habe ich jetzt auch das decoding Problem?

attr PV_Anlage_1_API reading22015Encode ???   <<< utf8 geht nicht :-)

Event_03_description Abregelung der AC-Leistung auf Grund externer Signale oder erh�hter Netzfrequenz.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 03 September 2020, 19:26:54
1236         $header = join ("\r\n", map ($attr{$name}{$_}, sort grep (/${context}${num}Header/, keys %{$attr{$name}})));
1237         if (length $header == 0) {
1238             $header = join ("\r\n", map ($attr{$name}{$_}, sort grep (/${context}Header/, keys %{$attr{$name}})));
1239         }


(request|get|set)Header.* werden nur benutzt, wenn keine (request|get|set)<num>Header.* gesetzt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 03 September 2020, 19:33:27
Zitat von: ch.eick am 03 September 2020, 19:25:22
Hmm, habe ich jetzt auch das decoding Problem?

attr PV_Anlage_1_API reading22015Encode ???   <<< utf8 geht nicht :-)

Event_03_description Abregelung der AC-Leistung auf Grund externer Signale oder erh�hter Netzfrequenz.

Anscheinend ja ;) Sollte in der neuen Version (noch nicht eingecheckt aber hier  (https://forum.fhem.de/index.php/topic,45176.msg1081788.html#msg1081788)verfügbar) behoben sein. Aber diese Version ist noch nicht fertig getestet
Siehe hier https://forum.fhem.de/index.php/topic,45176.msg1082208.html#msg1082208
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 03 September 2020, 20:14:08
Super, vielen Dank für beide Antworten und das mit dem "setMethod POST" habe ich auch noch gebraucht.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 September 2020, 20:09:41
Moin,
ich bin schon blind vom Suchen:

Ich lese JSON Rückgabe Werte, möchte diese jedoch auf ein get einschränken, damit nicht immer alle readings gesucht werden.
Andere wiederum sind nicht eineindeutig und können nur durch das get korrekt zugeordnet werden.

get20 holt z.B. Statistiken

attr PV_Anlage_1_API get20Header authorization: Session %auth_sessionId%
attr PV_Anlage_1_API get20Name 20_/processdata/scb_statistic_EnergyFlow
attr PV_Anlage_1_API get20URL http://%IP-Address_Plenticore%/api/v1/processdata/scb:statistic:EnergyFlow


Und solche readings lesen dann die Werte. Im Namen habe ich schon die 20 eingebaut, 01-99 wären dann die Werte

attr PV_Anlage_1_API reading2004JSON 01_processdata_04_value
attr PV_Anlage_1_API reading2004Name Statistic_Autarky_Year


Dann habe ich das hier gefunden, kann ich damit auch JSON Werte einlesen?

formating and manipulating values / readings

Values that are parsed from an HTTP response can be further treated or formatted with the following attributes:
(reading|get)[0-9]*(-[0-9]+)?OExpr
(reading|get)[0-9]*(-[0-9]+)?OMap
(reading|get)[0-9]*(-[0-9]+)?Format
(reading|get)[0-9]*(-[0-9]+)?Decode
(reading|get)[0-9]*(-[0-9]+)?Encode


Ich bekomme es gerade einfach nicht hin, sorry
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 04 September 2020, 21:34:58
Nicht lesen, sondern nur nachformattieren.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 September 2020, 09:40:34
Zitat von: amenomade am 04 September 2020, 21:34:58
Nicht lesen, sondern nur nachformattieren.
Okay, also gibt es für das get** kein gezieltes Lesen...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 September 2020, 11:18:13
Bin mir nicht sicher, was dein Problem ist.

get20JSON, get20Regex und get20XPath sind auf get20 beschränkt. Damit wird nur ein Reading (Name davon ist was in get20Name steht) extrahiert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 September 2020, 15:44:54
Hi,

ich hatte mir zuerst die readings generieren lassen, bekam dann aber 4-5 Stück pro Eintrag.
Dann habe ich sie bereinigt und den Namen für die readings passend gewählt. Nun hat das get20 rund 30 readings, die aber bei jedem get** durchgetestet werden.
Ich hätte gerne bei get20... die reading20-**[JSON|NAME] .


reading2001JSON 01_processdata_01_value
reading2001Name Statistic_Autarky_Day
reading2002JSON 01_processdata_02_value
reading2002Name Statistic_Autarky_Month
reading2003JSON 01_processdata_03_value
reading2003Name Statistic_Autarky_Total
reading2004JSON 01_processdata_04_value
reading2004Name Statistic_Autarky_Year


Dann gibt es z.B. ein get31... , get32... , get33.... und es kommt jeweils ein ähnlicher JSON String zurück, der aber im richtigen reading landen soll

[{"id":"Battery:Type","value":"4"}]
[{"id":"Battery:MinHomeComsumption","value":"50.0"}]
[{"id":"Battery:MinSoc","value":"15"}]


Mit regex könnte ich jetzt natürlich je ein reading definieren, was dann den Wert zugewiesen bekommt, dann kann ich aber nicht mehr die JSON Funktionalität nutzen.
Es kann auch sein, dass ich noch die JSON Werte in einem Request abfragen kann, dann wäre die Idee von oben sicherlich einfacher, sofern es sowas gibt.

attr PV_Anlage_1_API reading31Name Battery_Type
attr PV_Anlage_1_API reading31Regex Battery:Type","value":"(\d)
attr PV_Anlage_1_API reading32Name Battery_MinHomeComsumption
attr PV_Anlage_1_API reading32Regex Battery:MinHomeComsumption","value":"(\d+.\d+)
attr PV_Anlage_1_API reading33Name Battery_Strategy
attr PV_Anlage_1_API reading33Regex Battery:Strategy","value":"(\d+)
attr PV_Anlage_1_API reading34Name Battery_MinSoc
attr PV_Anlage_1_API reading34Regex Battery:MinSoc","value":"(\d+)
attr PV_Anlage_1_API reading35Name Battery_SmartBatteryControl_Enable
attr PV_Anlage_1_API reading35Regex Battery:SmartBatteryControl:Enable","value":"(\d+)
attr PV_Anlage_1_API reading36Name Battery_DynamicSoc_Enable
attr PV_Anlage_1_API reading36Regex Battery:DynamicSoc:Enable","value":"(\d+)


Das Ergebnis sieht dann so aussehen.

Battery_Type 4
Battery_MinHomeComsumption 50.0
Battery_MinSoc 15
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 September 2020, 16:29:43
In get20JSON passt auch eine Regex, zB
get20JSON 01_processdata_0._value
Die Readings kannst Du dann nw mit
get20-1Name Statistic_Autarky_Day
get20-2Name Statistic_Autarky_Month
umnennen

Sowas meinst Du?

Zum weiteren Helfen hätte ich gerne ein "list" von deinem HTTPMOD und ein Beispiel vom JSON Ergebnis.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 September 2020, 18:23:13
Hey, super,
ich glaube das ist es...

attr PV_Anlage_1_API get20JSON 01_processdata_.._value    <<<< mit .. werden alle 32 readings gelesen

attr PV_Anlage_1_API get20-1Name Statistic_Autarky_Day
attr PV_Anlage_1_API get20-2Name Statistic_Autarky_Month
attr PV_Anlage_1_API get20-3Name Statistic_Autarky_Total
...
attr PV_Anlage_1_API get20-32Name Statistic_Yield_Year


Kann man sich denn darauf verlassen, dass die readings immer in der selben Reihenfolge kommen?

Vielen Dank
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 05 September 2020, 20:56:30
Zitat von: ch.eick am 05 September 2020, 18:23:13

Kann man sich denn darauf verlassen, dass die readings immer in der selben Reihenfolge kommen?

Sollte, so lange im JSON String die auch immer in der selben Reihenfolge kommen. Aber darauf hat sich schon deine alte Methode verlassen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 06 September 2020, 09:29:19
Zitat von: amenomade am 05 September 2020, 20:56:30
Sollte, so lange im JSON String die auch immer in der selben Reihenfolge kommen. Aber darauf hat sich schon deine alte Methode verlassen.
Das war auch nur so, weil die Namen nicht sprechend waren :-) Ein JSON Parser, der auch noch konfigurierbar ist, wäre da ein Träumchen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 September 2020, 09:20:48
Hallo,

hier nochmal eine neue Version, bei der auch die readings automatisch utf8 encoded werden wenn bodyDecode nicht gesetzt und damit auf 'auto' steht und kein anderes encoding mit (reading|get|set)[0-9]*(-[0-9]+)?Decode eingestellt ist.

Zusammengefasst:
Nach dem Lesen wird ein HTTP-Body automatisch anhand des charset-Headers in der Response dekodiert.
Das kann man mit dem Attribut bodyDecode beeinflussen. Per default steht das auf 'auto'. Man kann aber auch explizit einen Wert wie 'utf8' oder auch 'none' einstellen. Bei 'none' findet keine Dekodierung statt.

Nach dem Parsen können Readings nochmal mit decode / encode bearbeitet werden.
Wenn nichts eingestellt ist und der HTTP-Body (siehe oben) dekodiert wurde, dann werden die Readings utf8 encoded.
Beeinflussen kann man das mit den Attributen (reading|get|set)[0-9]*(-[0-9]+)?Decode,  und (reading|get|set)[0-9]*(-[0-9]+)?Encode, also z.B. reading02Encode oder get05Encode für ein einzelnes Reading oder readingEncode für alle Readings.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 September 2020, 10:19:48
Moin, und schon kommt das nächste Gerät :-)

Ich habe einen BYD Speicher, der mit einen Python Skript abgefragt werden kann.

Gibt es zu HTTPBasicAuth("username","password") ein equivalent im httpmod ?

Beim Trace mit Burp sehe ich keine Information zum Login. Es kommt ein Fenster mit Abfrage der Userid und des Passworts, aber ich kann die Übertragung mit dem Format nirgends sehen.

Das bekomme ich bei fehlenden Login zurück

HTTP/1.1 401 Unauthorized
Server: GoAhead-Webs
Date: Tue Sep  8 09:44:02 2020
WWW-Authenticate: Digest realm="BoxServer", domain="",qop="auth", nonce="d34576bfbef65c9195db2b559f949f5e", opaque="5ccc069c403ebaf9f0171e9517f40e41",algorithm="MD5", stale="FALSE"
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html


EDIT: Das hier habe ich gefunden. Wie muss ich das im HTTPMOD behandeln?
https://en.wikipedia.org/wiki/Digest_access_authentication (https://en.wikipedia.org/wiki/Digest_access_authentication)
https://www.hackingarticles.in/understanding-http-authentication-basic-digest (https://www.hackingarticles.in/understanding-http-authentication-basic-digest/)
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc780170(v=ws.10)?redirectedfrom=MSDN (https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2003/cc780170(v=ws.10)?redirectedfrom=MSDN)

EDIT: Nun habe ich versucht das umzusetzten

{
my $NAME="BYD_Status_test";;
my $HA1=encode_base64("installer:".ReadingsVal($NAME,"auth_realm","").":<BYD Passwort>");;
my $HA2=md5_hex("get:/asp/RunData.asp");;
my $r=md5_hex($HA1.":".ReadingsVal($NAME,"auth_nonce","").":".$HA2);;
fhem("setreading ".$NAME." auth_HA1 ".$HA1);;
fhem("setreading ".$NAME." auth_HA2 ".$HA2);;
fhem("setreading ".$NAME." auth_nc 0000001");;
fhem("setreading ".$NAME." auth_response ".$r);;
Test program}



## Das kommt vom ersten Aufruf
auth_nonce 29a3a913f7661890358f89b197794097
auth_opaque 5ccc069c403ebaf9f0171e9517f40e41
auth_qop auth
auth_realm BoxServer

## Mit einem replacement generiere ich schon sowas
auth_HA1 aW5zdGFsbGVyOkJveFNlcnZlcjpieWQ=
auth_HA2 54e1b5993d8c43684082d55d2e599003
auth_nc 0000001
auth_response 48516bb5ff17e98b0cb90c781564f310

## Und den Header für die sid Anmeldung habe ich noch nicht


Ich denke, ich bin auf einem richtigen Weg, jedoch benötige ich Hilfe, wie der Header String dann aussehen muss, um einen login zu bekommen.

EDIT: Nach einem Login im Browser habe ich dann jetzt einen response Header gefunden, der sich bei jeder Abfrage wieder neu berechnet

Authorization: Digest username="installer", realm="BoxServer", nonce="c98ef6ed8acd191dde3d83f946d20723", uri="/asp/RunData.asp", algorithm=MD5, response="d856fd9554062aac22d3f154c41f665f", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000011, cnonce="d789ea5b7e9a2377"

Nun fehlt mir der Berechnungsweg zu diesen Werten :-(

Trace im Browser:

# General
Request URL: http://192.168.178.20/asp/RunData.asp
Request Method: GET
Status Code: 401 Unauthorized
Remote Address: 192.168.178.20:80
Referrer Policy: no-referrer-when-downgrade

# Response Headers
Cache-Control: no-cache
Content-Type: text/html
Date: Tue Sep  8 13:08:08 2020
Pragma: no-cache
Server: GoAhead-Webs
WWW-Authenticate: Digest realm="BoxServer", domain="",qop="auth", nonce="7b9ad8b5b9cb64dbb6ebaffec867cc96", opaque="5ccc069c403ebaf9f0171e9517f40e41",algorithm="MD5", stale="FALSE"

# Request Headers
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,mt;q=0.6
Connection: keep-alive
DNT: 1
Host: 192.168.178.20
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Raspbian Chromium/78.0.3904.108 Chrome/78.0.3904.108 Safari/537.36

############## Das Login Fenster öffnet sich für UserID und Passwort
# Nach der Eingabe

# General
Request URL: http://192.168.178.20/asp/RunData.asp
Request Method: GET
Status Code: 200 OK
Remote Address: 192.168.178.20:80
Referrer Policy: no-referrer-when-downgrade

# Response Headers
Cache-Control: no-cache
Content-Type: text/html
Date: Tue Sep  8 13:12:08 2020
Pragma: no-cache
Server: GoAhead-Webs
WWW-Authenticate: Digest realm="BoxServer", domain="",qop="auth", nonce="6221f9ee6cedc8258a55f72ea22b9134", opaque="5ccc069c403ebaf9f0171e9517f40e41",algorithm="MD5", stale="FALSE"

# Request Headers
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,mt;q=0.6
Cache-Control: max-age=0
Connection: keep-alive
DNT: 1
Host: 192.168.178.20
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Raspbian Chromium/78.0.3904.108 Chrome/78.0.3904.108 Safari/537.36

################Und dann bei jedem Update

# General
Request URL: http://192.168.178.20/asp/RunData.asp
Request Method: GET
Status Code: 200 OK
Remote Address: 192.168.178.20:80
Referrer Policy: no-referrer-when-downgrade

# Response Headers
Cache-Control: no-cache
Content-type: text/html
Date: Tue Sep  8 13:16:58 2020
Pragma: no-cache
Server: GoAhead-Webs

# Request Headers
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
Accept-Encoding: gzip, deflate
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7,mt;q=0.6
Authorization: Digest username="installer", realm="BoxServer", nonce="4ea52d3c19eaf2367902e8cfa27537f9", uri="/asp/RunData.asp", algorithm=MD5, response="e079a1305a02f29213146159f0155cfd", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000002, cnonce="52d88b546fca0900"
Cache-Control: max-age=0
Connection: keep-alive
DNT: 1
Host: 192.168.178.20
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/537.36 (KHTML, like Gecko) Raspbian Chromium/78.0.3904.108 Chrome/78.0.3904.108 Safari/537.36




Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 08 September 2020, 16:06:03
Ich möchte per FHEM einen Sonoff DIY Switch über das REST API ansteuern, habe die Requests zunächst erfolgreich mit Postman getestet und die Pakete im Wireshark gesehen. Wenn ich das mit u.g. Konfiguration probiere, reagiert der Schalter nicht, findet Wireshark keine Pakete und meldet FHEM:
Zitatsonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out

defmod sonoffdiy HTTPMOD none 0
attr sonoffdiy userattr set01Data set01Header set01Method:GET,POST,PUT set01Name set01NoArg:0,1 set01URL set02Data set02Header set02Method:GET,POST,PUT set02Name set02NoArg:0,1 set02URL
attr sonoffdiy set01Data { "deviceid": "", "data": { "switch": "off" } }
attr sonoffdiy set01Header Content-Length: 47
attr sonoffdiy set01Method POST
attr sonoffdiy set01Name off
attr sonoffdiy set01NoArg 1
attr sonoffdiy set01URL http://192.168.178.93:8081/zeroconf/switch
attr sonoffdiy set02Data { "deviceid": "", "data": { "switch": "on" } }
attr sonoffdiy set02Header Content-Length: 46
attr sonoffdiy set02Method POST
attr sonoffdiy set02Name on
attr sonoffdiy set02NoArg 1
attr sonoffdiy set02URL http://192.168.178.93:8081/zeroconf/switch


Was läuft schief?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 September 2020, 17:16:21
Hallo zusammen,
ich habe gerade meinen Post nochmal aktualisiert und ein verbose 5 Log angehängt.
Jetzt kommt schon ein "Wrong Password" :-) , dann sollte etwas mit dem Hash und den Keys nicht ganz so richtig sein.

Über Hilfe würde ich mich sehr freuen
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 September 2020, 17:22:18
Zitat von: wires.io am 08 September 2020, 16:06:03
Ich möchte per FHEM einen Sonoff DIY Switch über das REST API ansteuern, habe die Requests zunächst erfolgreich mit Postman getestet und die Pakete im Wireshark gesehen. Wenn ich das mit u.g. Konfiguration probiere, reagiert der Schalter nicht, findet Wireshark keine Pakete und meldet FHEM:
defmod sonoffdiy HTTPMOD none 0
attr sonoffdiy userattr set01Data set01Header set01Method:GET,POST,PUT set01Name set01NoArg:0,1 set01URL set02Data set02Header set02Method:GET,POST,PUT set02Name set02NoArg:0,1 set02URL
attr sonoffdiy set01Data { "deviceid": "", "data": { "switch": "off" } }
attr sonoffdiy set01Header Content-Length: 47
attr sonoffdiy set01Method POST
attr sonoffdiy set01Name off
attr sonoffdiy set01NoArg 1
attr sonoffdiy set01URL http://192.168.178.93:8081/zeroconf/switch
attr sonoffdiy set02Data { "deviceid": "", "data": { "switch": "on" } }
attr sonoffdiy set02Header Content-Length: 46
attr sonoffdiy set02Method POST
attr sonoffdiy set02Name on
attr sonoffdiy set02NoArg 1
attr sonoffdiy set02URL http://192.168.178.93:8081/zeroconf/switch


Was läuft schief?
Hallo,
Du solltest noch ein Logfile dazu legen :-)
Den set01Header und set02Header kannst du weglassen, weil der berechnet wird.
Die set01Method ist meine ich auch nicht nötig, da durch set02Data automatisch ein POST gemacht wird.
Ist der Date String ohne eine deviceid so richtig?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 08 September 2020, 18:23:14
Zitat von: wires.io am 08 September 2020, 16:06:03

Was läuft schief?
Das kann man ohne Log verbose 5 nicht sehen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 08 September 2020, 18:28:38
 @ch.eick: deine Log zeigt, dass Du immer noch nicht authentifiziert bist.
Die Browser Log zeigt aber nicht die "POST" Request mit Authentifizierung, und die Antwort, die dann kam.

Ein "list" vom HTTPMOD Device, passend zu Log, wäre auch hilfreich.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 08 September 2020, 19:28:03
Zitat von: amenomade am 08 September 2020, 18:28:38
@ch.eick: deine Log zeigt, dass Du immer noch nicht authentifiziert bist.
Die Browser Log zeigt aber nicht die "POST" Request mit Authentifizierung, und die Antwort, die dann kam.

Ein "list" vom HTTPMOD Device, passend zu Log, wäre auch hilfreich.
Ich habe da ein Problem die Daten zu liefern :-(

1)Das Log zeigt den Versuch der Anmeldung, was noch nicht geglückt ist, da die Keys wohl falsch berechnet werden.

2) Ich habe es nun geschafft, aus Burp einen gültigen Header zu kopieren, mit dem ich jetzt eine Verbindung bekomme.

attr BYD_Status_test get01Header Authorization: Digest username="installer", realm="BoxServer", nonce="2370ffe077296607d63cf6177159abdc", uri="/asp/RunData.asp", algorithm=MD5, response="a7da56c7835c90c025d6cf246a1e492f", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000002, cnonce="126c7fc80a04c19e"

Was mir nicht klar ist, wie die Keys aufgebaut werden. Über die Web Seiten gibt es da vielfältige Möglichkeiten, die ich mit dem replacement teste.
Die aktuellte Meldung ist "wrong Passwort", was mir sagt, dass die Berechnung mit HA1 und HA2 so nicht stimmen kann.

Ich erzeuge mal ein Log mit dem "wrong passwort" und eins mit dem get01Header" aus dem Browser.

Die list Device sind auch in den jeweiligen Dateien.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 08 September 2020, 20:55:05
2020.09.08 20:49:34 5: sonoffdiy: set called with on
2020.09.08 20:49:34 5: sonoffdiy: set found option on in attribute set02Name
2020.09.08 20:49:34 4: sonoffdiy: set will now set on
2020.09.08 20:49:34 5: sonoffdiy: AddToQueue adds type set02 to URL http://192.168.178.93:8081/zeroconf/switch, data { "deviceid": "", "data": { "switch": "on" } }, header Content-Length: 46, retry 0, initial queue len: 0
2020.09.08 20:49:34 5: sonoffdiy: HandleSendQueue called, qlen = 1
2020.09.08 20:49:34 5: sonoffdiy: HandleSendQueue - call with HTTP METHOD: POST
2020.09.08 20:49:34 4: sonoffdiy: HandleSendQueue sends set02 with timeout 2 to http://192.168.178.93:8081/zeroconf/switch,
data: { "deviceid": "", "data": { "switch": "on" } },
header: Content-Length: 46
2020.09.08 20:49:34 5: HttpUtils url=http://192.168.178.93:8081/zeroconf/switch
2020.09.08 20:49:34 4: IP: 192.168.178.93 -> 192.168.178.93
2020.09.08 20:49:34 5: HttpUtils request header:
POST /zeroconf/switch HTTP/1.0
Host: 192.168.178.93:8081
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 46
Content-Type: application/x-www-form-urlencoded

2020.09.08 20:49:36 3: sonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out
2020.09.08 20:49:36 4: sonoffdiy: Read callback: request type was set02 retry 0, no headers, no body
2020.09.08 20:49:36 5: sonoffdiy: Read callback: body empty
2020.09.08 20:49:36 4: sonoffdiy: Read found no charset header (bodyDecode was set to auto)
2020.09.08 20:49:36 5: sonoffdiy: GetCookies is looking for Cookies
2020.09.08 20:49:36 5: sonoffdiy: ExtractSid called, context set, num 02
2020.09.08 20:49:36 4: sonoffdiy: no header to look for redirects
2020.09.08 20:49:36 5: sonoffdiy: CheckAuth decided no authentication required
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 00:09:16
Zitat von: wires.io am 08 September 2020, 20:55:05
2020.09.08 20:49:34 5: sonoffdiy: set called with on
2020.09.08 20:49:34 5: sonoffdiy: set found option on in attribute set02Name
2020.09.08 20:49:34 4: sonoffdiy: set will now set on
2020.09.08 20:49:34 5: sonoffdiy: AddToQueue adds type set02 to URL http://192.168.178.93:8081/zeroconf/switch, data { "deviceid": "", "data": { "switch": "on" } }, header Content-Length: 46, retry 0, initial queue len: 0
2020.09.08 20:49:34 5: sonoffdiy: HandleSendQueue called, qlen = 1
2020.09.08 20:49:34 5: sonoffdiy: HandleSendQueue - call with HTTP METHOD: POST
2020.09.08 20:49:34 4: sonoffdiy: HandleSendQueue sends set02 with timeout 2 to http://192.168.178.93:8081/zeroconf/switch,
data: { "deviceid": "", "data": { "switch": "on" } },
header: Content-Length: 46
2020.09.08 20:49:34 5: HttpUtils url=http://192.168.178.93:8081/zeroconf/switch
2020.09.08 20:49:34 4: IP: 192.168.178.93 -> 192.168.178.93
2020.09.08 20:49:34 5: HttpUtils request header:
POST /zeroconf/switch HTTP/1.0
Host: 192.168.178.93:8081
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 46
Content-Type: application/x-www-form-urlencoded

2020.09.08 20:49:36 3: sonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out
2020.09.08 20:49:36 4: sonoffdiy: Read callback: request type was set02 retry 0, no headers, no body
2020.09.08 20:49:36 5: sonoffdiy: Read callback: body empty
2020.09.08 20:49:36 4: sonoffdiy: Read found no charset header (bodyDecode was set to auto)
2020.09.08 20:49:36 5: sonoffdiy: GetCookies is looking for Cookies
2020.09.08 20:49:36 5: sonoffdiy: ExtractSid called, context set, num 02
2020.09.08 20:49:36 4: sonoffdiy: no header to look for redirects
2020.09.08 20:49:36 5: sonoffdiy: CheckAuth decided no authentication required


Nimm die attr setXXNoArg weg. Da wird gar keine "post" Data mitgechickt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 00:26:05
Zitat von: ch.eick am 08 September 2020, 19:28:03
Ich habe da ein Problem die Daten zu liefern :-(

1)Das Log zeigt den Versuch der Anmeldung, was noch nicht geglückt ist, da die Keys wohl falsch berechnet werden.

2) Ich habe es nun geschafft, aus Burp einen gültigen Header zu kopieren, mit dem ich jetzt eine Verbindung bekomme.

attr BYD_Status_test get01Header Authorization: Digest username="installer", realm="BoxServer", nonce="2370ffe077296607d63cf6177159abdc", uri="/asp/RunData.asp", algorithm=MD5, response="a7da56c7835c90c025d6cf246a1e492f", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000002, cnonce="126c7fc80a04c19e"

Was mir nicht klar ist, wie die Keys aufgebaut werden. Über die Web Seiten gibt es da vielfältige Möglichkeiten, die ich mit dem replacement teste.
Die aktuellte Meldung ist "wrong Passwort", was mir sagt, dass die Berechnung mit HA1 und HA2 so nicht stimmen kann.

Ich erzeuge mal ein Log mit dem "wrong passwort" und eins mit dem get01Header" aus dem Browser.

Die list Device sind auch in den jeweiligen Dateien.

Gruß
   Christian

Du hast am Anfang gesagt, es gäbe ein Python Skript? Welches?
Hast Du schon einfach mit BasicAuth: http://User:Password@192.168.178.20/asp/RunData.asp versucht?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 September 2020, 08:25:57
Da ändert sich leider nichts.

2020.09.09 08:24:51 5: sonoffdiy: set called with on 1
2020.09.09 08:24:51 5: sonoffdiy: set found option on in attribute set02Name
2020.09.09 08:24:51 4: sonoffdiy: set will now set on -> 1
2020.09.09 08:24:51 5: sonoffdiy: AddToQueue adds type set02 to URL http://192.168.178.93:8081/zeroconf/switch, data { "deviceid": "", "data": { "switch": "on" } }, header Content-Length: 46, retry 0, initial queue len: 0
2020.09.09 08:24:51 5: sonoffdiy: HandleSendQueue called, qlen = 1
2020.09.09 08:24:51 5: sonoffdiy: HandleSendQueue - call with HTTP METHOD: POST
2020.09.09 08:24:51 4: sonoffdiy: HandleSendQueue sends set02 with timeout 2 to http://192.168.178.93:8081/zeroconf/switch,
data: { "deviceid": "", "data": { "switch": "on" } },
header: Content-Length: 46
2020.09.09 08:24:51 5: HttpUtils url=http://192.168.178.93:8081/zeroconf/switch
2020.09.09 08:24:51 4: IP: 192.168.178.93 -> 192.168.178.93
2020.09.09 08:24:51 5: HttpUtils request header:
POST /zeroconf/switch HTTP/1.0
Host: 192.168.178.93:8081
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 46
Content-Type: application/x-www-form-urlencoded

2020.09.09 08:24:53 3: sonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out
2020.09.09 08:24:53 4: sonoffdiy: Read callback: request type was set02 retry 0, no headers, no body
2020.09.09 08:24:53 5: sonoffdiy: Read callback: body empty
2020.09.09 08:24:53 4: sonoffdiy: Read found no charset header (bodyDecode was set to auto)
2020.09.09 08:24:53 5: sonoffdiy: GetCookies is looking for Cookies
2020.09.09 08:24:53 5: sonoffdiy: ExtractSid called, context set, num 02
2020.09.09 08:24:53 4: sonoffdiy: no header to look for redirects
2020.09.09 08:24:53 5: sonoffdiy: CheckAuth decided no authentication required
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 09 September 2020, 10:52:35
ZitatDa ändert sich leider nichts.

erhöhe mal den timeout.
zb "attr sonoffdiy timeout 30"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 09 September 2020, 11:07:53
EDIT: Ich habe nochmal ein neues Log erzeugt, weil die Übergabe der Keys in der Reihenfolge nicht richtig war.
         Kommentare und Erklärungen sind auch direkt in der log Datei.
         Auch der weitere Test mit der neuen "response" ist fehlgeschlagen.
         Ich ruf schon mal bei eft, dem Service von BYD an :-)

Zitat von: amenomade am 09 September 2020, 00:26:05
Du hast am Anfang gesagt, es gäbe ein Python Skript? Welches?
Hast Du schon einfach mit BasicAuth: http://User:Password@192.168.178.20/asp/RunData.asp versucht?
Das mit dem BasicAuth klappt nicht, da ist auch leider ein "@" im Passwort.


Das sind die Zeilen für das Login

    mySession = requests.Session()

        url='http://'+BYDboxIP+'/asp/RunData.asp'
        r4 = mySession.get(url, auth=HTTPBasicAuth(credentials["username"],credentials["password"]))

Ich habe nirgends gefunden, was HTTPBasicAuth() so alles macht, bin aber auch kein Entwickler.

Und hier alles

fhem@raspberrypi:~/python/bin$ cat byd_status.py
import fhem

import sys
BYDboxIP = sys.argv[1]
web = sys.argv[2]


import requests
import time
import json

from pprint import pprint
from bs4 import BeautifulSoup
from requests.auth import HTTPBasicAuth
import logging

#from loggerdate import loggerdate


def getvaluefromsubstring (inputvalue):
    # The input we pass looks like this:
    #<input readonly="readonly" type="text" value="5186"/>
    #Goal is to return value 5186 as outputvalue
    #Not sure if BeautifulSoup could do more / better...
    output_array=  str(inputvalue)
    A,B,C,outputvalue=  output_array.split('=')
    outputvalue, A= outputvalue.split('/')
    A,outputvalue,B = outputvalue.split('"')
    if ('%' in outputvalue):
        outputvalue, A = outputvalue.split('%')
    outputvalue = float(outputvalue)
    return outputvalue

def readbyd():

    #Please adjust the parameters below as appropriate for your environment:

    # username and password are read from pwd_byd.json file ; BYDboxIP is parsed from sys commandline
    #print ("Start reading Password file for BYD access....")
    try:
        with open('/opt/fhem/python/pwd_byd.json', 'r') as f:
            credentials=json.load(f)
    except Exception as e:
        print('Something went wrong: {}'.format(e))

    #No configurable parameters beyond this point       
   
    mySession = requests.Session()
    try:
        BYDdata={}
        #The two stupid lines below took me almost a day...
        #You can access other pages on the BYD WEB-Page - calling other asp scripts
        url='http://'+BYDboxIP+'/asp/RunData.asp'
        r4 = mySession.get(url, auth=HTTPBasicAuth(credentials["username"],credentials["password"]))
        if (r4.status_code == 200):
            page = r4.text
            soup = BeautifulSoup(page, 'html.parser')
            soup_ele = soup.body.form.table                                    #This gets us the RunData Table and Array Num 1 values - using this approach
            soup_reduced = soup_ele.find_all('input',attrs={"type": "text"} )  #Using this option now since BYD introduced some glitches with Firmware 3.012R on their html code..
            # It now contains a list of the following kind
            #<input readonly="readonly" type="text" value="19.300"/>
            #print (soup_reduced)
            #print ("ERSTES ELE", soup_reduced[1])
            Keyvalue=[]
            for elems in soup_reduced:
                elems=str(elems)
                myarray= elems.split('=')
                CurValue=myarray[3].split('"')
                Keyvalue.append(CurValue[1])

            BYDdata["arrayvoltage"]= float(Keyvalue[0])
            BYDdata["packvoltage"] = float(Keyvalue[1])
            BYDdata["current"] = float(Keyvalue[2])
            BYDdata["soc"] = (Keyvalue[3])
            BYDdata["sysTemp"] = Keyvalue[4]         
            BYDdata["maxcellvol"] = float(Keyvalue[5])
            BYDdata["mincellvol"] = float(Keyvalue[6])       
            BYDdata["maxcelltemp"] = float(Keyvalue[7])
            BYDdata["mincelltemp"] = float(Keyvalue[8])
            BYDdata["maxvolpos"] = int(Keyvalue[9])
            BYDdata["minvolpos"] = Keyvalue[10]
            BYDdata["maxtemppos"] = Keyvalue[11]
            BYDdata["mintemppos"] = Keyvalue[12]
            BYDdata["power"] = Keyvalue[13]           
            """
            # Oh well - with Firmware 3.012R, these values have disappeared from the BYD web pages...
            BYDdata["soc"] = Keyvalue[3]
            BYDdata["socwh"] = Keyvalue[4]
            BYDdata["socah"] = Keyvalue[5]   
            BYDdata["soh"] = Keyvalue[6]                 
            """

            Error_Connecting = 0

        else:
            print ("Not sure if we are able to connect with the given username & password - error code is:", r4.status_code)
            print ("Header information passed is :", r4.headers)
            Error_Connecting = r4.status_code
   
        url='http://'+BYDboxIP+'/asp/StatisticInformation.asp'
        r2 = mySession.get(url, auth=HTTPBasicAuth(credentials["username"],credentials["password"]))
        if ((r2.status_code == 200) and (Error_Connecting == 0)):
            page = r2.text
            soup = BeautifulSoup(page, 'html.parser')
            soup_ele = soup.body.table   
            #print (soup_ele)
            #print ("--------------------------------------------------------")
            #<input readonly="readonly" type="text" value="5186"/>
            soup_reduced = soup_ele.find_all('input')
            #print (soup_reduced)
            #print ("soup_ele", soup_ele)
            i = 0
            a= len(soup_ele.contents)
            total_charge_energy = soup_ele.find("td", text="Total Charge Energy:").find_next_sibling("td").text
            total_charge_energy,b = (total_charge_energy.split())
            total_charge_energy = float(total_charge_energy)
            #print ("Total Charge Energy :", total_charge_energy)
            BYDdata["Total_Charge_Energy"]= total_charge_energy
           
            total_discharge_energy = soup_ele.find("td", text="Total Discharge Energy:").find_next_sibling("td").text
            total_discharge_energy,b = (total_discharge_energy.split())
            total_discharge_energy = float(total_discharge_energy)
            #print ("Total Discharge Energy :", total_discharge_energy)
            BYDdata["Total_Discharge_Energy"] = total_discharge_energy
           
            total_cycle_counts = soup_ele.find("td", text="Total Cycle Counts:").find_next_sibling("td").text
            #total_cycle_counts,b = (total_cycle_counts.split())
            total_cycle_counts = float(total_cycle_counts)
            #print ("Total Cycle Counts :", total_cycle_counts)
            BYDdata["Total_Cycle_Counts"] = total_cycle_counts
        else:
            print ("Not sure if we are able to connect with the given username & password - error code is:", r4.status_code)
            print ("Header information passed is :", r2.headers)
            Error_Connecting = r2.status_code
           
    except Exception as Connecterror:
        print ("Error connecting to the BYD box :", Connecterror)
        #logging.error("%s %s %s", loggerdate(), ",readbyd: Ran into exception querying the BYD Box : ", Connecterror)
        Error_Connecting = Connecterror
    if (Error_Connecting == 0):
        if (len(BYDdata) >1):                         # We have something in the list

            Returnvalue =0
    else:                                               # We ran into trouble and allocate an empty list
        BYDdata={}
        print ("Issue getting data from BYD ", Error_Connecting)
       
    return (Returnvalue, BYDdata)   
       
   



if __name__ == "__main__": 

    #print ("Start querying BYD....")
    try:
        Myreturnvalue, Mydata = readbyd();
        if (Myreturnvalue == 0):
            #print ("Returnvalue -should be zero if successful : ", Myreturnvalue)
            #print ("----------------Start Values BYD ----------------")
            #pprint (Mydata)
            #print ("----------------End - Values from BYD ----------------")
            #print ("Specific values from array....")
            #print ("BYD Total Charge Energy                 :", Mydata['Total_Charge_Energy'], "Kwh")
            #print ("BYD Total Discharge Energy              :", Mydata['Total_Discharge_Energy'], "Kwh")
            #print ("Calculations...")
            #print ("Charging (+) / Discharging (-) Energy   :", round(Mydata['packvoltage']*Mydata['current'],0), "W")
            #print ("Efficiency is                           :",round(Mydata['Total_Discharge_Energy']/Mydata['Total_Charge_Energy'],3))
            #print (Mydata)

            message = json.dumps(Mydata)

            #print ("Start reading Password file for FHEM access....")
            try:
                with open('/opt/fhem/python/pwd_fhem.json', 'r') as f:
                    credentials=json.load(f)
            except Exception as e:
                print('Something went wrong: {}'.format(e))

            #print ("Start login to FHEM ....")
            fh = fhem.Fhem(web, protocol="http", port=8083, username=credentials["username"], password=credentials["password"])

            #print ("Start transfer of data to FHEM ....")
            fh.send_cmd("setreading BYD_Status output " + message)

        else:
            print ("Error unable to query BYD Box")
    except Exception as ex:
        print ("Issues querying BYD Box :", ex)

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 September 2020, 13:04:52
Zitat von: frank am 09 September 2020, 10:52:35
erhöhe mal den timeout.
zb "attr sonoffdiy timeout 30"

Bewirkt leider auch keine Änderung. Ich habe das Gefühl, das FHEM garnicht sendet. Wenn ich vom selben System, auf dem FHEM läuft,
curl --request POST --data '{ "deviceid": "", "data": { "switch": "off" } }' http://192.168.178.93:8081/zeroconf/switch
ausführe, funktioniert es aber.

Echt seltsam...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 09 September 2020, 15:45:49
Zitat von: wires.io am 09 September 2020, 13:04:52
Bewirkt leider auch keine Änderung. Ich habe das Gefühl, das FHEM garnicht sendet. Wenn ich vom selben System, auf dem FHEM läuft,
curl --request POST --data '{ "deviceid": "", "data": { "switch": "off" } }' http://192.168.178.93:8081/zeroconf/switch
ausführe, funktioniert es aber.
So etwas hatte ich auch schon, da lag es an den Headern, die curl wohl automatisch erzeugt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 20:03:55
Zitat von: wires.io am 09 September 2020, 08:25:57
Da ändert sich leider nichts.

Da wird immer noch nichts als Data mitgeschickt. Bitte wieder ein "list" vom HTTPMOD.

Zitat von: ch.eick am 09 September 2020, 15:45:49
So etwas hatte ich auch schon, da lag es an den Headern, die curl wohl automatisch erzeugt.
Das stimmt. Das kann man aber schön mit -v bei curl sehen, und ggf die entspr. Headers beim HTTPMOD setzen. Aber grundsätzlich macht HTTPMOD fast die gleiche Headers wie curl, bis auf dem User-Agent. Also:
attr sonoffdiy set01Header1 User-Agent: curl
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 20:10:04
Zitat von: ch.eick am 09 September 2020, 11:07:53

Das mit dem BasicAuth klappt nicht, da ist auch leider ein "@" im Passwort.
Dann als %40 im Passwort escapen. (ggf andere Sonderzeichen auch "urlencode" escapen - aber nicht den Doppelpunkt zwischen User und Passwort und das "@" vor der URL! )

Zitat von: ch.eick am 09 September 2020, 11:07:53

Das sind die Zeilen für das Login

    mySession = requests.Session()

        url='http://'+BYDboxIP+'/asp/RunData.asp'
        r4 = mySession.get(url, auth=HTTPBasicAuth(credentials["username"],credentials["password"]))


Deswegen bestehe ich auf einem Test mit reinem BasicAuth :) Im Skript ist von DigestAuth überhaupt nicht die Rede.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 09 September 2020, 20:42:38
Zitat von: amenomade am 09 September 2020, 20:03:55
Da wird immer noch nichts als Data mitgeschickt. Bitte wieder ein "list" vom HTTPMOD.
Das stimmt. Das kann man aber schön mit -v bei curl sehen, und ggf die entspr. Headers beim HTTPMOD setzen. Aber grundsätzlich macht HTTPMOD fast die gleiche Headers wie curl, bis auf dem User-Agent. Also:
attr sonoffdiy set01Header1 User-Agent: curl

Voila:
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      5f5532c5-f33f-64cd-67bc-e4205583225871dd
   Interval   0
   LASTSEND   1599676825.93438
   MainURL   
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       sonoffdiy
   NOTIFYDEV  global
   NR         777
   NTFY_ORDER 50-sonoffdiy
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://192.168.178.93:8081
   auth       0
   buf       
   data       { "deviceid": "", "data": { "switch": "off" } }
   displayurl http://192.168.178.93:8081/zeroconf/switch
   header     User-Agent: curl/7.38.0
   host       192.168.178.93
   httpversion 1.0
   ignoreredirects 1
   loglevel   4
   method     POST
   path       /zeroconf/switch
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.93:8081/zeroconf/switch
   value      0
   QUEUE:
   READINGS:
   REQUEST:
     data       { "deviceid": "", "data": { "switch": "off" } }
     header     User-Agent: curl/7.38.0
     ignoreredirects 0
     method     POST
     retryCount 0
     type       set01
     url        http://192.168.178.93:8081/zeroconf/switch
     value      0
   sslargs:
Attributes:
   set01Data  { "deviceid": "", "data": { "switch": "off" } }
   set01Header User-Agent: curl/7.38.0
   set01Method POST
   set01Name  off
   set01NoArg 1
   set01URL   http://192.168.178.93:8081/zeroconf/switch
   set02Data  { "deviceid": "", "data": { "switch": "on" } }
   set02Header User-Agent: curl/7.38.0
   set02Method POST
   set02Name  on
   set02NoArg 1
   set02URL   http://192.168.178.93:8081/zeroconf/switch
   timeout    2
   userattr   set01Data set01Header set01Method:GET,POST,PUT set01Name set01NoArg:0,1 set01URL set02Data set02Header set02Method:GET,POST,PUT set02Name set02NoArg:0,1 set02URL
   verbose    5
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 20:48:43
Zitat von: wires.io am 09 September 2020, 20:42:38
Voila:
Internals:
   BUSY       0
   CFGFN     
...
Attributes:
   set01NoArg 1
...
   set02NoArg 1

Tja... die NoArg Attribute sind doch noch da... EDIT: sorry, das war Quatsch von mir.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 21:02:21
Hmmm... Sorry, ich habe das falsche Attribut erwähnt. NoArg ist doch richtig, wenn Du nicht "set device on etwas" machen willst. Ich muss nochmal suchen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 09 September 2020, 21:29:05
Mach mal noch ein
attr sonoffdiy set01Header2 Accept: */*

Sonst kannst Du bitte zeigen, was "curl -v ..." sagt?

Das in der Log ist merkwürdig, aber Du sagst, es gab bei timeOut 30 keine Änderung
Zitat2020.09.09 08:24:53 3: sonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out

EDIT: eine andere Idee wäre, ein PRESENCE Device zu definieren, nur um zu sehen, ob der Sonoff aus Fhem erreichbar ist:
define sonoffpres PRESENCE lan-ping 192.168.178.93 10
Meldet er "present"?




Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 08:36:03
Zitat von: amenomade am 09 September 2020, 21:29:05
EDIT: eine andere Idee wäre, ein PRESENCE Device zu definieren, nur um zu sehen, ob der Sonoff aus Fhem erreichbar ist:
define sonoffpres PRESENCE lan-ping 192.168.178.93 10
Meldet er "present"?

Ja, meldet "present".

Zitat von: amenomade am 09 September 2020, 21:29:05
Sonst kannst Du bitte zeigen, was "curl -v ..." sagt?

$ curl --request POST --data '{ "deviceid": "", "data": { "switch": "off" } }' -v http://192.168.178.93:8081/zeroconf/switch
* Hostname was NOT found in DNS cache
*   Trying 192.168.178.93...
* Connected to 192.168.178.93 (192.168.178.93) port 8081 (#0)
> POST /zeroconf/switch HTTP/1.1
> User-Agent: curl/7.38.0
> Host: 192.168.178.93:8081
> Accept: */*
> Content-Length: 47
> Content-Type: application/x-www-form-urlencoded
>
* upload completely sent off: 47 out of 47 bytes
< HTTP/1.1 200 OK
* Server openresty is not blacklisted
< Server: openresty
< Content-Type: application/json; charset=utf-8
< Content-Length: 20
< Connection: close
<
* Closing connection 0
{"seq":39,"error":0}


Zitat von: amenomade am 09 September 2020, 21:29:05
attr sonoffdiy set01Header2 Accept: */*

Bewirkt leider nichts.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 08:42:00
Zitat von: amenomade am 09 September 2020, 20:10:04
Dann als %40 im Passwort escapen. (ggf andere Sonderzeichen auch "urlencode" escapen - aber nicht den Doppelpunkt zwischen User und Passwort und das "@" vor der URL! )
Deswegen bestehe ich auf einem Test mit reinem BasicAuth :) Im Skript ist von DigestAuth überhaupt nicht die Rede.
- Das Escapen hat auch nicht geklappt, es kam wieder das Login Fenster vom Browser.
- Dann habe ich das Passwort geändert, ohne ein spezielles Sonderzeichen, was jedoch auch nicht geklappt hat. Wieder das Loginfenster

- BasicAuth: Ich vermute, dass die Python Funktion beim Login erkennt, was gefordert wird. Anhand von diesen Rückmeldungen gehe ich vin Digest aus

Erster Request, bis zum Login Fenster
WWW-Authenticate: Digest realm="BoxServer", domain="",qop="auth", nonce="0529bbb3c1bc9b68bc92765bd256e100", opaque="5ccc069c403ebaf9f0171e9517f40e41",algorithm="MD5", stale="FALSE"
Das liefert alle Werte, die auch in der allgemeinen Digest Dokumentation im Web zu finden sind.

Neuer Request mit Anmeldung.
Authorization: Digest username="installer", realm="BoxServer", nonce="c2f4d5c429bd3dc91180e1939167a25b", uri="/menu.asp", algorithm=MD5, response="57187e44d51950a90bdb42d7ee48f9f3", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000005, cnonce="98d14c0429be2188"


Ich habe im FHEM versucht die Funktion "md5()" aufzurufen, jedoch wird die nicht gefunden. Daraufhin habe ich "md5_hex()" gefunden und verwendet. Auch da ist sicherlich ein Unterschied und ein Fehler.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 08:44:02
Zitat von: wires.io am 10 September 2020, 08:36:03
Content-Type: application/json; charset=utf-8
auch das "charset=utf-8" könnte etwas bewirken.

EDIT: In dem List sehe ich, dass Du nur einen set01Header verwendest, um alles zu setzen kannst Du auch mehrere definieren, um alles zu setzen.

set01Header1 Accept: */*
set01Header2 Content-Type: application/x-www-form-urlencoded
set01Header3 charset=utf-8

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 10 September 2020, 10:51:31
@wires.io: Läuft Fhem in einem Container? In einem anderen Thread scheint jemand das gleiche Problem zu haben. Bei ihm läuft Fhem auf einem LXC unter Proxmox.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 11:14:47
Nein, FHEM läuft "direkt" auf Debian.

Was bedeutet eigentlich das hier?

Read callback: Error: read from http://192.168.178.93:8081 timed out

Versucht FHEM hier ein GET auf http://192.168.178.93:8081? Das lässt der Sonoff nämlich nicht zu.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 11:18:52
Und schon wieder eine neue Frage :-)

Bei einer Abfrage bekomme ich ein MOSMIX_L_2020091003_P0178.kmz File geliefert. Dies muss jedoch erst entpackt werden:

cat MOSMIX_L_2020091003_P0178.kmz |gzip -d

Kann ich das im HTTPMOD mit einbauen, um dann die xml Datei in readings einzulesen?

EDIT: Momentan ist die komprimierte Datei im httpbody bereits zu sehen

2020.09.10 10:58:13.281 5: HttpUtils response header:
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 10 Sep 2020 08:58:13 GMT
Content-Type: application/vnd.google-earth.kmz
Content-Length: 15321
Last-Modified: Thu, 10 Sep 2020 04:27:13 GMT
Connection: close
ETag: "5f59ab21-3bd9"
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
Accept-Ranges: bytes
2020.09.10 10:58:13.281 4: DWD_Forecast: Read callback: request type was get01 retry 0,
header: HTTP/1.1 200 OK
Server: nginx
Date: Thu, 10 Sep 2020 08:58:13 GMT
Content-Type: application/vnd.google-earth.kmz
Content-Length: 15321
Last-Modified: Thu, 10 Sep 2020 04:27:13 GMT
Connection: close
ETag: "5f59ab21-3bd9"
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
Accept-Ranges: bytes, body length 15321
2020.09.10 10:58:13.281 5: DWD_Forecast: Read callback: body
�"*QMOSMIX_L_2020091003_P0178.kml�}]��������aP�


EDIT:
Ich könnte jetzt mit Regex auf QMOSMIX_L_2020091003_P0178.kml reagieren.                                                 <<<< das geht nicht, vermutlich weil es komprimiert ist.
Oder eventuell auf "Content-Type: application/vnd.google-earth.kmz", das zeigt ja bereits das Format an.        <<<< das geht aber


Internals:
   BUSY       0
   CFGFN     
   DEF        https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml 0
   FUUID      5f59e83a-f33f-61a8-ecbe-6a9f4105b5a07b62
   Interval   0
   LASTSEND   1599739799.32837
   MainURL    https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml
   ModuleVersion 3.5.22 - 7.2.2020
   NAME       DWD_Forecast
   NOTIFYDEV  global
   NR         111673
   NTFY_ORDER 50-DWD_Forecast
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       https://opendata.dwd.de:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
   header     
   host       opendata.dwd.de
   httpbody   PK�N*QMOSMIX_L_2020091009_P0178.kml�}]�������

snip.....

�N*Q{#��:tAMOSMIX_L_2020091009_P0178.kmlPKK;

   httpheader HTTP/1.1 200 OK
Server: nginx
Date: Thu, 10 Sep 2020 12:09:59 GMT
Content-Type: application/vnd.google-earth.kmz
Content-Length: 15218
Last-Modified: Thu, 10 Sep 2020 09:57:20 GMT
Connection: close
ETag: "5f59f880-3b72"
X-Frame-Options: SAMEORIGIN
Strict-Transport-Security: max-age=31536000
Accept-Ranges: bytes
   httpversion 1.0
   hu_blocking 0
   hu_filecount 39
   hu_port    443
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
   protocol   https
   redirects  0
   timeout    2
   url        https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
   value      0
   CompiledRegexes:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2020-09-10 14:09:59   Daten           PK�N*QMOSMIX_L_2020091009_P0178.kml�}]��������aP� [���W���|m�_

Die Daten wären nun in einem reading...

�N*Q{#��:tAMOSMIX_L_2020091009_P0178.kmlPKK;
     2020-09-10 14:09:59   P0178           1
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       get01
     url        https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
     value      0
   defptr:
     readingBase:
       P0178      reading
     readingNum:
       P0178      01
     readingOutdated:
     requestReadings:
       get01:
         P0178      reading 01
   sslargs:
Attributes:
   DbLogExclude .*
   get01Name  P0178
   get01URL   https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
   reading01Name P0178
   reading01Regex vnd.google-earth.kmz
   room       Informationen->Wetter,Strom->Photovoltaik
   showBody   1
   userReadings Daten:P0178.* {InternalVal("DWD_Forecast","httpbody","");;}
 
   verbose    5


Jetzt fehlt noch der Syntax für das Perl interne gunzip/gzip . Das Problem ist, dass ich nicht eine Variable übergeben kann und den Output dann auf STDOUT ausgegeben bekomme.

Das hier sollte von STDIN lesen, aber wie bekomme ich den Inhalt einer Variable im Perl auf STDIN des nächsten Befehls????

gzip "-" => "-"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 11:20:02
Zitat von: wires.io am 10 September 2020, 11:14:47
Versucht FHEM hier ein GET auf http://192.168.178.93:8081? Das lässt der Sonoff nämlich nicht zu.
Das kannst Du im verbose 5 Log sehen, wenn der Aufruf gemacht wird.

Es wird ein POST gemacht

2020.09.08 20:49:34 5: HttpUtils request header:
POST /zeroconf/switch HTTP/1.0
Host: 192.168.178.93:8081
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 46
Content-Type: application/x-www-form-urlencoded


Zeig nochmal ein aktuelles Log mit den set01Header* , die Du jetzt verwendest. Hattest Du meinen Vorschlag auch schon probiert?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 11:29:19
Zitat von: ch.eick am 10 September 2020, 11:20:02
Hattest Du meinen Vorschlag auch schon probiert?

Habe ich:

2020.09.10 11:28:16 5: sonoffdiy: set called with on
2020.09.10 11:28:16 5: sonoffdiy: set found option on in attribute set02Name
2020.09.10 11:28:16 4: sonoffdiy: set will now set on
2020.09.10 11:28:16 5: sonoffdiy: AddToQueue adds type set02 to URL http://192.168.178.93:8081/zeroconf/switch, data { "deviceid": "", "data": { "switch": "on" } }, header Accept: */*
Content-Type: application/x-www-form-urlencoded
charset=utf-8, retry 0, initial queue len: 0
2020.09.10 11:28:16 5: sonoffdiy: HandleSendQueue called, qlen = 1
2020.09.10 11:28:16 4: sonoffdiy: HandleSendQueue sends set02 with timeout 2 to http://192.168.178.93:8081/zeroconf/switch,
data: { "deviceid": "", "data": { "switch": "on" } },
header: Accept: */*
Content-Type: application/x-www-form-urlencoded
charset=utf-8
2020.09.10 11:28:16 5: HttpUtils url=http://192.168.178.93:8081/zeroconf/switch
2020.09.10 11:28:16 4: IP: 192.168.178.93 -> 192.168.178.93
2020.09.10 11:28:16 5: HttpUtils request header:
POST /zeroconf/switch HTTP/1.0
Host: 192.168.178.93:8081
User-Agent: fhem
Accept-Encoding: gzip,deflate
Accept: */*
Content-Type: application/x-www-form-urlencoded
charset=utf-8
Content-Length: 46

2020.09.10 11:28:18 3: sonoffdiy: Read callback: Error: read from http://192.168.178.93:8081 timed out
2020.09.10 11:28:18 4: sonoffdiy: Read callback: request type was set02 retry 0, no headers, no body
2020.09.10 11:28:18 5: sonoffdiy: Read callback: body empty
2020.09.10 11:28:18 4: sonoffdiy: Read found no charset header (bodyDecode was set to auto)
2020.09.10 11:28:18 5: sonoffdiy: GetCookies is looking for Cookies
2020.09.10 11:28:18 5: sonoffdiy: ExtractSid called, context set, num 02
2020.09.10 11:28:18 4: sonoffdiy: no header to look for redirects
2020.09.10 11:28:18 5: sonoffdiy: CheckAuth decided no authentication required
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 11:35:03
Beim curl Aufruf steht im Header

Content-Type: application/x-www-form-urlencoded; charset=utf-8

Es ist wirklich merkwürdig, aber ich kämpfe auch an einer API, die sehr zickig ist ;-)

EDIT:
Das habe ich auch gerade noch gesehen "HTTP/1.0" bei Dir und "HTTP/1.1  bei curl.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 11:39:31
Wenn ich das richtig interpretiere, steht das in der Antwort vom Sonoff und nicht im Request von curl.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 11:54:04
Zitat von: wires.io am 10 September 2020, 11:39:31
Wenn ich das richtig interpretiere, steht das in der Antwort vom Sonoff und nicht im Request von curl.
Okay,

dann wäre noch die HTTP Version
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 11:57:29
Zitat von: ch.eick am 10 September 2020, 11:54:04
dann wäre noch die HTTP Version

Yeaaaaaaaaah, danke!!! Das war's! Die ganzen Header brauche ich dann nicht.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 12:01:08
Zitat von: wires.io am 10 September 2020, 11:57:29
Yeaaaaaaaaah, danke!!! Das war's! Die ganzen Header brauche ich dann nicht.
Das freut mich, dann ist jetzt wieder Platz für meine Fragen ;-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Esjay am 10 September 2020, 12:15:45
Zitat von: wires.io am 10 September 2020, 11:57:29
Yeaaaaaaaaah, danke!!! Das war's! Die ganzen Header brauche ich dann nicht.

Kannst du bitte nochmal deine komplette Lösung posten?
Bin der Typ von dem amenomade hier spricht:
Zitat von: amenomade am 10 September 2020, 10:51:31
@wires.io: Läuft Fhem in einem Container? In einem anderen Thread scheint jemand das gleiche Problem zu haben. Bei ihm läuft Fhem auf einem LXC unter Proxmox.

https://forum.fhem.de/index.php/topic,114146.0.html
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 12:28:15
Zitat von: Esjay am 10 September 2020, 12:15:45
Kannst du bitte nochmal deine komplette Lösung posten?
Es war letztendlich die HTTP Version, den Rest des devices habe ich nicht :-)

attr <device> httpVersion 1.1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Esjay am 10 September 2020, 12:40:17
Zumindest bekomme ich jetzt schonmal ne Antwort vom Server:

2020.09.10 12:38:48 1:  Logfile gelöscht
2020.09.10 12:38:56 5:  MyDevice: set called with LEDDevice true
2020.09.10 12:38:56 5:  MyDevice: set found option LEDDevice in attribute set01Name
2020.09.10 12:38:56 4:  MyDevice: set will now set LEDDevice -> true
2020.09.10 12:38:56 5:  MyDevice: AddToQueue adds type set01 to URL http://192.168.178.76:8090/json-rpc, data {"command":"componentstate","componentstate":{"component":"LEDDEVICE","state":$val}}}, header Content-Type: application/json, retry 0, initial queue len: 0
2020.09.10 12:38:56 5:  MyDevice: HandleSendQueue called, qlen = 1
2020.09.10 12:38:56 4:  MyDevice: HandleSendQueue sends set01 with timeout 2 to http://192.168.178.76:8090/json-rpc,
data: {"command":"componentstate","componentstate":{"component":"LEDDEVICE","state":true}}},
header: Content-Type: application/json
2020.09.10 12:38:56 5:  HttpUtils url=http://192.168.178.76:8090/json-rpc
2020.09.10 12:38:56 4:  IP: 192.168.178.76 -> 192.168.178.76
2020.09.10 12:38:57 5:  HttpUtils request header:
POST /json-rpc HTTP/1.1
Host: 192.168.178.76:8090
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Type: application/json
Content-Length: 85

2020.09.10 12:38:57 4:  http://192.168.178.76:8090/json-rpc: HTTP response code 200
2020.09.10 12:38:57 5:  HttpUtils http://192.168.178.76:8090/json-rpc: Got data, length: 138
2020.09.10 12:38:57 5:  HttpUtils response header:
HTTP/1.1 200 OK.
Content-Type: application/json
Server: Hyperion Webserver
Date: Thu, 10 Sep 2020 10:38:57 UTC
Content-Length: 138
2020.09.10 12:38:57 4:  MyDevice: Read callback: request type was set01 retry 0,
header: HTTP/1.1 200 OK.
Content-Type: application/json
Server: Hyperion Webserver
Date: Thu, 10 Sep 2020 10:38:57 UTC
Content-Length: 138, body length 138
2020.09.10 12:38:57 5:  MyDevice: Read callback: body
{
    "command": "",
    "error": "Errors during message parsing, please consult the Hyperion Log.",
    "success": false,
    "tan": 0
}

2020.09.10 12:38:57 4:  MyDevice: Read found no charset header (bodyDecode was set to auto)
2020.09.10 12:38:57 5:  MyDevice: GetCookies is looking for Cookies
2020.09.10 12:38:57 5:  MyDevice: ExtractSid called, context set, num 01
2020.09.10 12:38:57 4:  MyDevice: checking for redirects, code=200, ignore=0
2020.09.10 12:38:57 4:  MyDevice: no redirects to handle
2020.09.10 12:38:57 5:  MyDevice: CheckAuth decided no authentication required


Jetzt muss ich nur noch herausfinden, was genau da los ist.

Edit: Hab es

2020.09.10 12:57:57 1:  Logfile gelöscht
2020.09.10 12:58:07 5:  MyDevice: set called with LEDDevice false
2020.09.10 12:58:07 5:  MyDevice: set found option LEDDevice in attribute set01Name
2020.09.10 12:58:07 4:  MyDevice: set will now set LEDDevice -> false
2020.09.10 12:58:07 5:  MyDevice: AddToQueue adds type set01 to URL http://192.168.178.76:8090/json-rpc, data {"command":"componentstate","componentstate":{"component":"LEDDEVICE","state":$val}}, header Content-Type: application/json, retry 0, initial queue len: 0
2020.09.10 12:58:07 5:  MyDevice: HandleSendQueue called, qlen = 1
2020.09.10 12:58:07 4:  MyDevice: HandleSendQueue sends set01 with timeout 2 to http://192.168.178.76:8090/json-rpc,
data: {"command":"componentstate","componentstate":{"component":"LEDDEVICE","state":false}},
header: Content-Type: application/json
2020.09.10 12:58:07 5:  HttpUtils url=http://192.168.178.76:8090/json-rpc
2020.09.10 12:58:07 4:  IP: 192.168.178.76 -> 192.168.178.76
2020.09.10 12:58:08 5:  HttpUtils request header:
POST /json-rpc HTTP/1.1
Host: 192.168.178.76:8090
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Type: application/json
Content-Length: 85

2020.09.10 12:58:08 4:  http://192.168.178.76:8090/json-rpc: HTTP response code 200
2020.09.10 12:58:08 5:  HttpUtils http://192.168.178.76:8090/json-rpc: Got data, length: 71
2020.09.10 12:58:08 5:  HttpUtils response header:
HTTP/1.1 200 OK.
Content-Type: application/json
Server: Hyperion Webserver
Date: Thu, 10 Sep 2020 10:58:08 UTC
Content-Length: 71
2020.09.10 12:58:08 4:  MyDevice: Read callback: request type was set01 retry 0,
header: HTTP/1.1 200 OK.
Content-Type: application/json
Server: Hyperion Webserver
Date: Thu, 10 Sep 2020 10:58:08 UTC
Content-Length: 71, body length 71
2020.09.10 12:58:08 5:  MyDevice: Read callback: body
{
    "command": "componentstate",
    "success": true,
    "tan": 0
}

2020.09.10 12:58:08 4:  MyDevice: Read found no charset header (bodyDecode was set to auto)
2020.09.10 12:58:08 5:  MyDevice: GetCookies is looking for Cookies
2020.09.10 12:58:08 5:  MyDevice: ExtractSid called, context set, num 01
2020.09.10 12:58:08 4:  MyDevice: checking for redirects, code=200, ignore=0
2020.09.10 12:58:08 4:  MyDevice: no redirects to handle
2020.09.10 12:58:08 5:  MyDevice: CheckAuth decided no authentication required


Hatte noch eine Klammer zu viel.

Danke für den Hinweis zur Http Version.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 13:53:15
Zitat von: Esjay am 10 September 2020, 12:15:45
Kannst du bitte nochmal deine komplette Lösung posten?

S.u. - es fehlt aber noch, dass der "state" aktualisiert wird, wenn ich schalte. Benötige ich dazu "notify" oder geht das auch einfacher?

defmod sonoffdiy HTTPMOD none 0
attr sonoffdiy userattr get01Data get01Method:GET,POST,PUT get01Name get01NoArg:0,1 get01URL reading01Name reading01Regex set01Data set01Name set01NoArg:0,1 set01URL set02Data set02Name set02NoArg:0,1 set02URL
attr sonoffdiy get01Data { "deviceid": "", "data": { } }
attr sonoffdiy get01Method POST
attr sonoffdiy get01Name state
attr sonoffdiy get01NoArg 1
attr sonoffdiy get01URL http://192.168.178.93:8081/zeroconf/info
attr sonoffdiy httpVersion 1.1
attr sonoffdiy reading01Name state
attr sonoffdiy reading01Regex "switch":"([\w\.]+)
attr sonoffdiy set01Data { "deviceid": "", "data": { "switch": "off" } }
attr sonoffdiy set01Name off
attr sonoffdiy set01NoArg 1
attr sonoffdiy set01URL http://192.168.178.93:8081/zeroconf/switch
attr sonoffdiy set02Data { "deviceid": "", "data": { "switch": "on" } }
attr sonoffdiy set02Name on
attr sonoffdiy set02NoArg 1
attr sonoffdiy set02URL http://192.168.178.93:8081/zeroconf/switch
attr sonoffdiy timeout 2
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 September 2020, 14:24:28
So, ich habe hier noch mal aktualisiert https://forum.fhem.de/index.php/topic,45176.msg1084262.html#msg1084262 (https://forum.fhem.de/index.php/topic,45176.msg1084262.html#msg1084262).
Da geht es um die Komprimierten Daten in einem reading und wie ich die entpackt bekomme???
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Esjay am 10 September 2020, 15:20:01
Hat sich erledigt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 15:53:58
Zitat von: wires.io am 10 September 2020, 13:53:15
S.u. - es fehlt aber noch, dass der "state" aktualisiert wird, wenn ich schalte. Benötige ich dazu "notify" oder geht das auch einfacher?

Habe es damit realisiert und habe nun eine extreme Verzögerung (ca. 10s) zwischen Mausklick on/off und Relaisklick ein/aus. Habe ich mir einen Nebeneffekt eingefangen?

defmod sonoffdiy_on_off notify sonoffdiy { fhem "get sonoffdiy state" }
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 10 September 2020, 17:11:24
Entkoppeln hilft - ist aber nicht ideal:
define sonoffdiy_on_off notify sonoffdiy { fhem "sleep 1;; get sonoffdiy state" }
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 10 September 2020, 21:03:57
Zitat von: wires.io am 10 September 2020, 17:11:24
Entkoppeln hilft - ist aber nicht ideal:
define sonoffdiy_on_off notify sonoffdiy { fhem "sleep 1;; get sonoffdiy state" }
Ein echter Trigger wäre auch nicht schlecht. Dein notify triggert bei jedem Event von sonoffdiy. Und mit dem sleep kann es zu endlose Schleifen führen.

Und "state" zu benutzen ist auch irreführend und könnte problematisch werden. Nimm lieber "status" oder was auch immer.

Wenn 1s zu viel ist, geht auch sleep 0.1


Das mit httpVersion hätte ich nie gedacht. Sorry für den Zeitverlust.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: wires.io am 11 September 2020, 09:32:17
Zitat von: amenomade am 10 September 2020, 21:03:57
Das mit httpVersion hätte ich nie gedacht. Sorry für den Zeitverlust.
Kein Thema! Ohne Eure Hilfe hätte ich das garnicht geschafft.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 September 2020, 09:48:59
Zitat von: amenomade am 10 September 2020, 21:03:57
Das mit httpVersion hätte ich nie gedacht. Sorry für den Zeitverlust.
Zusammen sind wir stark, Du hast mir ja auch schon sehr oft geholfen. Vielen Dank.

@amenomade: Soll ich meine beiden Themen, die hier noch offen sind in einen extra Thread verschieben? Ich denke das das recht komplex wird.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 September 2020, 18:02:33
EDIT: Dieses Problem ist jetzt erstmal gelöst, der Login funktioniert.
     Vielen Dank an alle, die zugehört haben.
     Die Lösung wird später hier zu  finden sein https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus (https://wiki.fhem.de/wiki/Kostal_Plenticore_10_Plus)

EDIT: Ich bin wieder einen Schritt weiter..... der response Key wird jetzt korrekt berechnet.

Ich habe mal wieder an dem Key Problem weiter getestet und bekomme es nicht hin ;-(


# Aus dem Browser bekomme ich
Authorization: Digest username="installer", realm="BoxServer", nonce="d3617eeb83d0d0cc2e6da94426220296", uri="/asp/RunData.asp", algorithm=MD5, response="05119372c842faebdd6f992cf53454da", opaque="5ccc069c403ebaf9f0171e9517f40e41", qop=auth, nc=00000002, cnonce="64cb80f3880a32f5"

# Und das wollte ich nach dieser Dokumentation [url][https://en.wikipedia.org/wiki/Digest_access_authentication/url] nachbauen.
HA1 = md5_hex("installer:BoxServer:<Passwort>")
HA2 = md5_hex("GET:/asp/RunData.asp")      <<<< das ist somit für den Aufruf ein fixer Wert

{md5_hex(md5_hex("installer:BoxServer:<Passwort>").":d3617eeb83d0d0cc2e6da94426220296:00000002:64cb80f3880a32f5:auth:".md5_hex("GET:/asp/RunData.asp"))}
response 8986fb0a61e8cfab32892c87f3dc9425

{encode_base64(md5_hex(md5_hex("installer:BoxServer:<Passwort>").":d3617eeb83d0d0cc2e6da94426220296:00000002:64cb80f3880a32f5:auth:".md5_hex("GET:/asp/RunData.asp")))}
response ODk4NmZiMGE2MWU4Y2ZhYjMyODkyYzg3ZjNkYzk0MjU=

Aber beides ist halt nicht die responce 05119372c842faebdd6f992cf53454da , die erreicht werden soll.

Natürlich habe ich immer mit dem selben <Passwort>, was auch beim Browseraufruf verwendet wurde getestet.


Das Beispiel von der Wiki bringt auch das identische Ergebnis:
{md5_hex("Mufasa:testrealm\@host.com:Circle Of Life")}
939e7578ed9e3c518a452acee763bce9

Oh man, und schon habe ich Problem gefunden....Im Passwort ist ein @ , der mit \@ maskiert werden muss :-) Und schon kann ich weiter Testen....
{md5_hex(md5_hex("installer:BoxServer:<Passwort>").":d3617eeb83d0d0cc2e6da94426220296:00000002:64cb80f3880a32f5:auth:".md5_hex("GET:/asp/RunData.asp"))}
response 05119372c842faebdd6f992cf53454da  <<<<< identisch zum Browser s.o.


Der Ursprung dieser Anfrage ist hier im Thread https://forum.fhem.de/index.php/topic,45176.msg1084014.html#msg1084014 (https://forum.fhem.de/index.php/topic,45176.msg1084014.html#msg1084014)

Wie komme ich da nun weiter? Der eft Service hat auch keine Information von BYD :-(

Gruß
      Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 11 September 2020, 20:15:18
Zitat von: ch.eick am 11 September 2020, 18:02:33

Wie komme ich da nun weiter? Der eft Service hat auch keine Information von BYD :-(

Gruß
      Christian
Jetzt weiss ich aber nicht wo Du stehst. Wie wäre es mit einem "list" deines HTTPMODs?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 12 September 2020, 10:15:39
Zitat von: amenomade am 11 September 2020, 20:15:18
Jetzt weiss ich aber nicht wo Du stehst. Wie wäre es mit einem "list" deines HTTPMODs?
Vielen Dank für die Rückfrage.
Das Login zum BYD Speicher läuft jetzt mit dem Digest Login.
Ich beginne nun die Informationen einzulesen und erste readings zu erzeugen. Da ist noch so viel Bewegung drin, das es heir den Rahmen sprengen würde.
Ich werde es dann im Zusammenhang mit der Kostal Plenticore Implementierung auf dem Wiki dokumentieren.

Ein noch offenes Problem ist nun dies hier https://forum.fhem.de/index.php/topic,45176.msg1084262.html#msg1084262 (https://forum.fhem.de/index.php/topic,45176.msg1084262.html#msg1084262) . Da habe ich mit gzip gepackte Daten, die ich zuerst entpacken müsste, um dann readings zu erstellen.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 September 2020, 12:06:21
Zitat von: ch.eick am 10 September 2020, 11:18:52

Jetzt fehlt noch der Syntax für das Perl interne gunzip/gzip . Das Problem ist, dass ich nicht eine Variable übergeben kann und den Output dann auf STDOUT ausgegeben bekomme.

Das hier sollte von STDIN lesen, aber wie bekomme ich den Inhalt einer Variable im Perl auf STDIN des nächsten Befehls????

gzip "-" => "-"


use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $compressed = "some compressed string $data";
my $uncompressed;
gunzip \$compressed => \$uncompressed
      or print "Cannot gunzip: $GunzipError\n";
print "Result: $uncompressed";

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 12 September 2020, 13:28:42
Zitat von: amenomade am 12 September 2020, 12:06:21
use IO::Uncompress::Gunzip qw(gunzip $GunzipError);
my $compressed = "some compressed string $data";
my $uncompressed;
gunzip \$compressed => \$uncompressed
      or print "Cannot gunzip: $GunzipError\n";
print "Result: $uncompressed";

Das habe ich auch gefunden, jedoch wird die Variable nicht entpackt. Im usereading mache ich folgendes und es kommt jetzt auch kein Fehler mehr vom gunzip.
Der Inhalt vom httbody und dem reading Daten sieht gleich aus. Also die gleichen cryptischen Zeichen.
Kann das etwas mit dem decode zu tun haben, das httpbody durch decode verändert wurde?
Könnte HTTPMOD auf den receive Header "Content-Type: application/vnd.google-earth.kmz" reagieren und dann die Daten entpacken?

Daten:P0178.* {my $dataout;; my $datain=InternalVal("DWD_Forecast","httpbody","");; gunzip \$datain => \$dataout or print "Cannot gunzip: $GunzipError\n";;$datain}



So klappt es schon mal

cat MOSMIX_L_LATEST_P0178.kmz |gunzip|less


Hier wären Musterdaten
https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz (https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz)


defmod DWD_Forecast HTTPMOD https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml 0
attr DWD_Forecast userattr get01Name get01URL reading01Name reading01Regex
attr DWD_Forecast DbLogExclude .*
attr DWD_Forecast get01Name P0178
attr DWD_Forecast get01URL https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
attr DWD_Forecast reading01Name P0178
attr DWD_Forecast reading01Regex vnd.google-earth.kmz
attr DWD_Forecast room Informationen->Wetter,Strom->Photovoltaik
attr DWD_Forecast showBody 1
attr DWD_Forecast userReadings Daten:P0178.* {my $dataout;;;; my $datain=InternalVal("DWD_Forecast","httpbody","");;;; gunzip \$datain => \$dataout or print "Cannot gunzip: $GunzipError\n";;;;$datain}
attr DWD_Forecast verbose 5
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 September 2020, 22:38:18
Zitat von: ch.eick am 12 September 2020, 13:28:42
Könnte HTTPMOD auf den receive Header "Content-Type: application/vnd.google-earth.kmz" reagieren und dann die Daten entpacken?
Ja, wenn Du dir die entspr. Regex baust, und es in einem Reading packt, kann ein userReading darauf reagieren.

Das:attr DWD_Forecast reading01Regex vnd.google-earth.kmz

macht nix. Kein capture group.

Zitat von: ch.eick am 12 September 2020, 13:28:42
Das habe ich auch gefunden, jedoch wird die Variable nicht entpackt. Im usereading mache ich folgendes und es kommt jetzt auch kein Fehler mehr vom gunzip.

Baue dann Log3 Einträge. So wirst Du sehen, was passiert.

Zitat von: ch.eick am 12 September 2020, 13:28:42

attr DWD_Forecast userReadings Daten:P0178.* {my $dataout;;;; my $datain=InternalVal("DWD_Forecast","httpbody","");;;; gunzip \$datain => \$dataout or print "Cannot gunzip: $GunzipError\n";;;;$datain}

Log3 statt print wäre besser.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 September 2020, 23:40:06
Ah, und übrigens:
attr DWD_Forecast userReadings Daten:P0178.* {my $dataout;;...;;$datain}

returns datain... Wäre wahrscheinlich besser mit dataout?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 13 September 2020, 00:56:10
Wenn man wie im DWD_OpenData Modul macht:

myUtils
use IO::Uncompress::Unzip qw(unzip $UnzipError);
sub parseKmz {
    my ($datain) = @_;
    open my $zipFileHandle, '<', \$datain;
    my @xmlStrings;
    unzip($zipFileHandle => \@xmlStrings, MultiStream => 1) or Log3 "DWD_Forecast",1,"unzip failed: $UnzipError";
    my $out = "UnzipError: $UnzipError\n";
    foreach my $xmlString (@xmlStrings) {
        $out .= $$xmlString;
        $out .= "\n";
        Log3 "DWD_Forecast",1,"xmlString=$$xmlString";
    }
    return $out;
}


HTTPMOD:
defmod DWD_Forecast HTTPMOD https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml 0
attr DWD_Forecast userattr get01Name get01OExpr get01Regex get01URL reading01Name reading01OExpr reading01Regex
attr DWD_Forecast get01Name P0178
attr DWD_Forecast get01OExpr parseKmz($val)
attr DWD_Forecast get01Regex (?s)(PK.*)
attr DWD_Forecast get01URL https://opendata.dwd.de/weather/local_forecasts/mos/MOSMIX_L/single_stations/P0178/kml/MOSMIX_L_LATEST_P0178.kmz
attr DWD_Forecast room Informationen->Wetter,Strom->Photovoltaik
attr DWD_Forecast verbose 5


Ergebnis:
   READINGS:
     2020-09-13 00:47:43   P0178           UnzipError:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<kml:kml xmlns:dwd="https://opendata.dwd.de/weather/lib/pointforecast_dwd_extension_V1_0.xsd" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:xal="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">
    <kml:Document>
        <kml:ExtendedData>
            <dwd:ProductDefinition>
                <dwd:Issuer>Deutscher Wetterdienst</dwd:Issuer>
                <dwd:ProductID>MOSMIX</dwd:ProductID>
                <dwd:GeneratingProcess>DWD MOSMIX hourly, Version 1.0</dwd:GeneratingProcess>
                <dwd:IssueTime>2020-09-12T21:00:00.000Z</dwd:IssueTime>
                <dwd:ReferencedModel>
                    <dwd:Model dwd:name="ICON" dwd:referenceTime="2020-09-12T12:00:00Z"/>
                    <dwd:Model dwd:name="ECMWF/IFS" dwd:referenceTime="2020-09-12T12:00:00Z"/>
                </dwd:ReferencedModel>
                <dwd:ForecastTimeSteps>
                    <dwd:TimeStep>2020-09-12T22:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-12T23:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T00:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T01:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T02:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T03:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T04:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T05:00:00.000Z</dwd:TimeStep>
                    <dwd:TimeStep>2020-09-13T06:00:00.000Z</dwd:TimeStep>
.........


Also... grundsätzlich "unzip" statt "gunzip".
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 13 September 2020, 08:33:38
Zitat von: amenomade am 13 September 2020, 00:56:10
Wenn man wie im DWD_OpenData Modul macht:
Also... grundsätzlich "unzip" statt "gunzip".
Ooooh man, das Modul hatte ich gar nicht gesehen, man wird echt betriebsblind....
Entschuldige bitte die Störung, das schau ich mir natürlich noch an, ich will kein Rad neu erfinden.

EDIT: Der Tip war super und man kann auch noch weitere Werte, über den default hinaus abrufen. In meinem Fall ging es ja um Rad1h. Hier die Lösung als RAW mit dem "forcastProperties Rad1h"

defmod DWD_Forecast_test DWD_OpenData
attr DWD_Forecast_test DbLogExclude .*
attr DWD_Forecast_test forecastDays 1
attr DWD_Forecast_test forecastProperties Rad1h
attr DWD_Forecast_test forecastResolution 1
attr DWD_Forecast_test forecastStation P0178
attr DWD_Forecast_test room Informationen->Wetter,Strom->Photovoltaik


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 14 September 2020, 19:17:06
Hallo und guten Abend,

vielleicht kann mir ja jemand weiterhelfen. Ich habe es bisher geschafft, mich auf der Seite, von der ich die Daten beziehen möchte einzuloggen und auch den http-Body auszulesen. Aus dem Body der wie folgt aufgebaut ist,


<tr><th>Break Info</th>
<th>Date_Temps</th>
<th>Puiss_A_Cons (kW)</th>
<th>Enrg_A_Cons (kWh)</th>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 00:15</td>
<td class='data'>0,160</td>
<td class='data'>0,040</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 00:30</td>
<td class='data'>0,168</td>
<td class='data'>0,042</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 00:45</td>
<td class='data'>0,168</td>
<td class='data'>0,042</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 01:00</td>
<td class='data'>0,168</td>
<td class='data'>0,042</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 01:15</td>
<td class='data'>0,176</td>
<td class='data'>0,044</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 01:30</td>
<td class='data'>0,184</td>
<td class='data'>0,046</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 01:45</td>
<td class='data'>0,184</td>
<td class='data'>0,046</td>
</tr>
<tr><td class='data'>&nbsp</td>
<td class='data'>14/09/2020 02:00</td>
<td class='data'>0,192</td>
<td class='data'>0,048</td>
</tr>



möchte ich gerne diese Daten, die viertelstündlich aufgezeichnet sind, in Readings schreiben:

<td class='data'>0,192</td>
<td class='data'>0,048</td>


Ich komme da irgendwie mit Regex oder XPath nicht weiter :(

Kann mich jemand in die richtige Richtung schubsen?

Danke schonmals im Voraus :-)

Gruss Jan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 14 September 2020, 19:48:45
Wenn die Daten immer gleich formattiert sind:
reading01Name data
reading01Regex class='data'>([0-9]+,[0-9]*)
reading01RegOpt g
sollte alle Werte in Readings data-1 data-2 data-3 usw holen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 September 2020, 07:57:28
Zitat von: amenomade am 14 September 2020, 19:48:45
Wenn die Daten immer gleich formattiert sind:
reading01Name data
reading01Regex class='data'>([0-9]+,[0-9]*)
reading01RegOpt g
sollte alle Werte in Readings data-1 data-2 data-3 usw holen
Und dann noch anhübschen mit


reading01-1Name Break_Info_01_Date_Temps
reading01-2Name Break_Info_01_Puiss_A_Cons
reading01-3Name Break_Info_01_Enrg_A_Cons

reading01-4Name Break_Info_02_Date_Temps
reading01-5Name Break_Info_02_Puiss_A_Cons
...


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 15 September 2020, 09:49:15
Super Vielen Dank :-) Das geht einwandfrei :-)

@Christian
Wie meinst Du das zum Aufhübschen ? Muss ich die Attribute vorher anlegen?

Gruss Jan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 September 2020, 11:36:42
Zitat von: JF Mennedy am 15 September 2020, 09:49:15
@Christian
Wie meinst Du das zum Aufhübschen ? Muss ich die Attribute vorher anlegen?
Du kannst jedem reading eine lesbaren Namen geben. Dazu schaust Du Dir die readings, die jetzt durchnummeriert sind an und kannst sie nach meinem Muster umbenennen lassen. Ansonsten heißt Dein Datum data-1, der nächste Wert data-2, ...
Das ganze lässt sich mit dem RAW Editor recht schnell eingeben.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 15 September 2020, 11:39:27
Ah ok, also muss ich das nach dem ersten Auslesen machen, wenn die Readings angelegt sind...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 September 2020, 11:47:48
Zitat von: JF Mennedy am 15 September 2020, 11:39:27
Ah ok, also muss ich das nach dem ersten Auslesen machen, wenn die Readings angelegt sind...
Genau, dann siehst Du auch die Reihenfolge der Werte, wie HTTPMOD sie ausgelesen hat.
Sind da eventuell auch noch +/- Werte dabei?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JF Mennedy am 15 September 2020, 12:40:23
Ich will ungefähr 40 Liegenschaften auslesen mit bis zu 3 Zählern (Wasser, Gas, Strom). Die Werte sind alle positiv und haben gelegentlich auch mehr Werte (bis zu 10). Ich denke, das Anlegen der Liegenschaften und der Zähler wird etwas Fleissarbeit. Anschliessend werde ich mit dbLog in eine SQL Datenbank schreiben und täglich aus SQL für jeden Zähler eine csv Datei schreiben, die ich dann per Mail verschicke...

Ich denke, die Namensgebung ist schon gut in fhem zu realisieren, um, wie DU schon sagtest, zu sehen, dass sie auch richtig eingelesen wurden, der Rest passiert dann auf SQL Basis...

Aber schon mal gut, dass ich die Werte ausgelesen bekomme :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 15 September 2020, 16:45:27
Hallo zusammen, vielleicht hat jemand Lust, mich hier ein wenig anzustubsen (mehr oder weniger ... ;) ):
Ich möchte einige Daten aus meinem Komoot-Profil einlesen. Leider ist der Login-Prozess in zwei Schritten, also ertsmal Abfrage email-Adresse und dann separat das Passwort.
Ich habe das wie folgt definiert, kann mich aber nicht einloggen:

defmod komoot HTTPMOD https://www.komoot.de/community/your-regions 3600
attr komoot userattr sid01Data sid01URL sid02Data
attr komoot enableCookies 1
attr komoot reAuthRegex .*403.Forbidden.*
attr komoot sid01Data email="xx@gmx.de"
attr komoot sid01URL https://account.komoot.com/signin?redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1
attr komoot sid02Data password="xxxx"
attr komoot verbose 4


Wie komme ich da weiter? Mit Dank im voraus ..
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 September 2020, 17:13:45
Zitat von: guhu am 15 September 2020, 16:45:27
Hallo zusammen, vielleicht hat jemand Lust, mich hier ein wenig anzustubsen (mehr oder weniger ... ;) ):
Ich möchte einige Daten aus meinem Komoot-Profil einlesen. Leider ist der Login-Prozess in zwei Schritten, also ertsmal Abfrage email-Adresse und dann separat das Passwort.
Ich habe das wie folgt definiert, kann mich aber nicht einloggen:

defmod komoot HTTPMOD https://www.komoot.de/community/your-regions 3600
attr komoot userattr sid01Data sid01URL sid02Data
attr komoot enableCookies 1
attr komoot reAuthRegex .*403.Forbidden.*
attr komoot sid01Data email="xx@gmx.de"
attr komoot sid01URL https://account.komoot.com/signin?redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1
attr komoot sid02Data password="xxxx"
attr komoot verbose 4


Wie komme ich da weiter? Mit Dank im voraus ..
Du solltest Dir die Kommunikation mit den Entwickertools im Browser oder Burp ansehen, was wird gesendet, was kommt zurück.
Dann wird hier immer ein Log mit verbose 5 benötigt.

Ob userid und passwort in zwei Headern stehen muss wird man im Browser sehen können.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 18 September 2020, 18:28:34
Danke für den Tip. Ich habe das mit Burp angeschaut.

Es werden 2x POST abgesetzt, das erste mal mit:
{"email":"xx@xx.com"}

das zweite Mal mit

{"email":"xx@xx.com","password":"xx","reason":null}


Das habe ich wie folgt umgesetzt:


attr komoot reAuthRegex .*403.Forbidden.*
attr komoot sid01Data {"email":"xx@xx.com"}
attr komoot sid01URL https://account.komoot.com/signin?redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1
attr komoot sid02Data {"email":"xx@xx.com","password":"xx","reason":null}
attr komoot sid02URL https://account.komoot.com/signin?redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1
attr komoot verbose 5


Das klappt aber so leider nicht,  im host steht:
HTTP/1.1 404 Not Found
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Fri, 18 Sep 2020 16:23:52 GMT
ETag: W/"14f8-jmcBrnMoCQozH8gpFuZvgAkM1gM"


Muss ich das sein lassen ...  ?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 18 September 2020, 20:22:38
defmod komoot HTTPMOD https://www.komoot.de/community/your-regions 0
attr komoot enableCookies 1
attr komoot httpVersion 1.1
attr komoot reAuthRegex .*403.Forbidden.*
attr komoot sid01Data {"email":"xxx@xxx.com"}
attr komoot sid01URL https://account.komoot.com/v1/signin
attr komoot sid02Data {"email":"xxx@xxx.com","password":"xxx","reason":null}
attr komoot sid02URL https://account.komoot.com/v1/signin
attr komoot sidHeader01 Referer: https://account.komoot.com/signin?redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1
attr komoot sidHeader02 Origin: https://account.komoot.com
attr komoot sidHeader03 Content-Type: application/json
attr komoot verbose 5



Entscheidend sind auf jeden Fall die login URLs mit v1 und ohne das ?parameter Teil danach, und sidHeader03
Vielleicht sind die andere Headers, und httpVersion nicht nötig (hab ich nicht getestet), aber zumindest funktioniert es so.

Ob das was zurückkommt brauchbar ist, ist eine andere Geschichte ;) Alles scheint auf api Request verlinkt zu sein
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 19 September 2020, 13:44:15
das Device ist ja darauf angelegt, periodisch die URLs abzufragen. Wie bekommt man das Device eigentlich dazu, die Aktion zu starten? Ist sicher beim Debuggen hilfreich.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 19 September 2020, 13:47:37
Zitat von: guhu am 19 September 2020, 13:44:15
das Device ist ja darauf angelegt, periodisch die URLs abzufragen. Wie bekommt man das Device eigentlich dazu, die Aktion zu starten? Ist sicher beim Debuggen hilfreich.
Verstehe deine Frage nicht. Meinst Du das Intervall? Einfach in der DEF ändern. Das setze ich immer bei Tests auf 0 und starte manuell über "set <name> reread" (EDIT: abhängig von deiner Version vom HTTPMOD Modul, musst Du vielleicht noch das Attribut enableControlSet auf 1 setzen, damit Du die "set" Kommandos hast.)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 19 September 2020, 14:04:47
ok, danke, das ist für Tests sicher gut, das meinte ich.

Habe das jetzt mal geändert, so dass ich 2x  die v1/signin URL ansteuere. Leider loggt der sich noch nicht ein. Im Logfile steht das so:
2020.09.19 13:47:00.128 4: https://www.komoot.de/community/your-regions: HTTP response code 403
2020.09.19 13:47:00.129 5: HttpUtils https://www.komoot.de/community/your-regions: Got data, length: 7728
2020.09.19 13:47:00.129 5: HttpUtils response header:
HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:00 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Connection: Close
2020.09.19 13:47:00.129 4: komoot: Read callback: request type was update retry 0,
header: HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:00 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Connection: Close, body length 7728
2020.09.19 13:47:00.129 5: komoot: Read callback: body
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>komoot: 403 Forbidden</title>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <link rel="shortcut icon" href="/icons/favicon.png">

  <style>
    * {
      margin: 0;
      padding: 0;
    }

    h1, p {
      margin-bottom: 12px;
    }

    a {
      color: #1086E8;
    }

    a:hover,
    a:focus,
    a:active {
      color: #1770BA;
      text-decoration: none;
    }

    html {
      background: #F5F4E9;
      font-family: -apple-system,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
      font-size: 16px;
      line-height: 1.5;
      color: #9D9D9D;
      padding: 48px 24px;
    }

    body {
      max-width: 560px;
      background: white;
      box-shadow: 0 6px 24px 6px rgba(0,0,0,.11);
      margin: 0 auto;
      padding: 24px;
    }

    header {
      border-bottom: 1px solid #E5E4D8;
      padding-bottom: 24px;
      margin-bottom: 24px;
    }

    header a {
      display: inline-block;
    }

    header svg {
      vertical-align: bottom;
    }

    h1 {
      font-size: 24px;
      color: #383838;
      margin-top: 0;
    }

    pre {
      color: black;
      font-size: 11px;
      font-family: monospace;
      overflow: auto;
      margin-top: 50px;
    }

    .en {
      margin-bottom: 42px;
    }

  </style>

</head>

<body>
  <header>
     <a href="/">
       <svg width="130" height="32" viewBox="0 0 130 32" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#93D759" offset="0%"/><stop stop-color="#78B34A" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><g><path d="M92.164 20.01c-1.606 0-2.908-1.352-2.908-3.018 0-1.667 1.302-3.018 2.908-3.018 1.605 0 2.907 1.351 2.907 3.018 0 1.666-1.302 3.017-2.907 3.017m0-9.026c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-34.597 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008 0-3.319-2.744-6.008-6.13-6.008zm48.599 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-54.941.335h-4.16l-3.784 4.57V8H40v14.713h3.282v-4.868s4.251 4.872 4.344 4.872c.735.002 4.081 0 4.081 0l-5.461-5.998 4.979-5.401zm70.116 8.842c-1.232.207-1.931-.276-2.222-.574-.299-.307-.521-.8-.521-1.122V14.02h3.062v-2.686h-3.062V8.233h-3.246v3.1h-2.217v2.687h2.217v4.444c0 2.494 2.075 4.524 4.626 4.524 0 0 1.19.043 2.022-.295l-.66-2.533zm-52.243 2.533s-.01-4.455 0-5.89c.002-.375.048-.737.13-1.078.171-.708.463-1.211 1.08-1.496.387-.18.83-.25 1.35-.22.69.043 1.15.351 1.403.944.18.421.205.876.205 1.266.002 1.602.001 6.474.001 6.474h3.174V16.8c0-.475.06-.887.184-1.257.237-.711.647-1.167 1.25-1.393.472-.176.923-.2 1.46-.07.435.104.754.343.977.729.216.375.333.817.336 1.31.008 1.616 0 6.574 0 6.574h3.25v-6.43c0-.355-.018-.726-.05-1.135-.068-.842-.273-1.559-.627-2.193a3.451 3.451 0 0 0-2.117-1.682c-.81-.235-1.678-.27-2.578-.106-.908.166-1.66.585-2.233 1.244-.147.169-.282.35-.412.525l-.029.038c-.334-.642-.802-1.12-1.392-1.423-.924-.474-1.954-.602-3.15-.392-1.067.187-1.788.723-2.36 1.594l-.4-1.396h-2.726v11.356h3.274zm-11.531-2.704c-1.606 0-2.908-1.342-2.908-2.997 0-1.656 1.302-2.998 2.908-2.998 1.605 0 2.907 1.342 2.907 2.998 0 1.655-1.302 2.997-2.907 2.997zm48.599.02c-1.606 0-2.908-1.35-2.908-3.017 0-1.667 1.302-3.018 2.908-3.018 1.606 0 2.907 1.351 2.907 3.018 0 1.666-1.301 3.017-2.907 3.017z" fill="#78B62E"/><path d="M0 16c0 3.745 1.29 7.187 3.446 9.913l8.188-8.188A4.676 4.676 0 0 1 11.303 16a4.697 4.697 0 0 1 9.394 0c0 .61-.12 1.19-.33 1.725l8.187 8.188A15.925 15.925 0 0 0 32 16c0-8.836-7.164-16-16-16S0 7.164 0 16m12.95 3.564l-8 8A15.938 15.938 0 0 0 16 32c4.287 0 8.177-1.69 11.05-4.436l-8-8c-.085.072-3.05-4.776-3.05-4.776s-2.965 4.848-3.05 4.776" fill="url(#a)"/></g></g></svg>
     </a>
  </header>

  <noscript>
  <meta name="refresh" http-equiv="refresh" content="0; url=https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">
</noscript>

<div id="pageMountNode">
  <article class="en">
    <h1>
      Please Hold!
    </h1>
    <p>
      We'll be redirecting you to the <a href="/login">log-in page</a> in just a few seconds.
    </p>
  </article>

  <article class="de">
    <h1>
      Bitte warte einen Augenblick!
    </h1>
    <p>
      Wir leiten dich weiter zur <a href="/login">Login-Seite</a>.
    </p>
  </article>
</div>

<p>Redirect to: <a href="https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">https://account.komoot.com/signin</a></p>
<script>
  (function () {
    var crossLoginFailed = function () {
            location.href = 'https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1';
        };

    // Prevent cicular redirect
    if (/(\?|&)_redirected=/.test(location.search)) {
        return crossLoginFailed();
    }

    // Prepare iframe
    var pageNode = document.getElementById('pageMountNode');
    var iframeNode = document.createElement('iframe');

    iframeNode.src = '/actions/signin/iframe_check';
    iframeNode.style.position = 'absolute';
    iframeNode.style.top = '0';
    iframeNode.style.left = '-10000px';
    iframeNode.style.width = '50px';
    iframeNode.style.height = '50px';
    iframeNode.onload = function (event) {
        try {
            // Read iframe content
            var content = iframeNode.contentWindow && iframeNode.contentWindow.document ? (
                iframeNode.contentWindow.document.body ? iframeNode.contentWindow.document.body.innerHTML : ''
            ) : iframeNode.contentDocument && iframeNode.contentDocument.document ? (
                iframeNode.contentDocument.document.body ? iframeNode.contentDocument.document.body.innerHTML : ''
            ) : '';

            // Remove iframe
            iframeNode.parentNode.removeChild(iframeNode);

            // Redirect
            if (/login_ok/.test(content)) {
                location.href = location.href
                    .replace(/(\?|#|$)/, function (all, key) {
                        if (key === '?') {
                            return '?_redirected=1&';
                        }
                        if (key === '#') {
                            return '?_redirected=1#';
                        }
                        return '?_redirected=1';
                    });
            } else {
               crossLoginFailed();
            }
        } catch (err) {
           crossLoginFailed();
        }
    };
    iframeNode.onerror = function (event) {
        // Remove iframe
        iframeNode.parentNode.removeChild(iframeNode);

        crossLoginFailed();
    };

    pageNode.parentNode.insertBefore(iframeNode, pageNode.nextSibling);
  })();
</script>


  <script>
    // Listen to pop state, getting back button working
    window.addEventListener('popstate', event => {
        if (event.state.path) {
            location.href = event.state.path;
        }
    });

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    window.ga && window.ga('create', 'UA-21610363-1', 'auto');
    window.ga && window.ga('send', 'pageview');
  </script>
</body>
</html>

2020.09.19 13:47:00.129 5: komoot: GetCookies is looking for Cookies
2020.09.19 13:47:00.129 5: komoot: ExtractSid called, context reading, num
2020.09.19 13:47:00.129 5: komoot: GetRegex found precompiled reAuthRegex for  as (?^:.*403.Forbidden.*)
2020.09.19 13:47:00.129 5: komoot: CheckAuth is checking buffer with ReAuthRegex (?^:.*403.Forbidden.*)
2020.09.19 13:47:00.129 4: komoot: CheckAuth decided new authentication required
2020.09.19 13:47:00.129 4: komoot: Auth called with Steps: 01 02
2020.09.19 13:47:00.129 5: komoot: AddToQueue prepends type auth02 to URL https://account.komoot.com/v1/signin, data {"email":"xx@xx.com","password":"xx","reason":null}, no headers, retry 0, initial queue len: 0
2020.09.19 13:47:00.130 5: komoot: AddToQueue prepends type auth01 to URL https://account.komoot.com/v1/signin, data {"email":"xx@xx.com"}, no headers, retry 0, initial queue len: 1
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue called, qlen = 2
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue is using Cookie ka_s.sig with path / and Value MQxvmjlD8zMdTG--MffVJKbn1Tg (key ka_s.sig;/, destination path is /v1/signin)
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue is using Cookie ka_s=eyJsYW5nIjoiZW4ifQ with path / and Value = (key ka_s=eyJsYW5nIjoiZW4ifQ;/, destination path is /v1/signin)
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue is using Cookie kmt_session.sig with path / and Value TeH6fZTwqkPEfyTX1VjHW_lywTA (key kmt_session.sig;/, destination path is /v1/signin)
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue is using Cookie kmt_session with path / and Value eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9 (key kmt_session;/, destination path is /v1/signin)
2020.09.19 13:47:00.130 5: komoot: HandleSendQueue is adding Cookie header: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:00.130 4: komoot: HandleSendQueue sends auth01 with timeout 2 to https://account.komoot.com/v1/signin,
data: {"email":"xx@xx.com"},
header: Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:00.130 5: HttpUtils url=https://account.komoot.com/v1/signin
2020.09.19 13:47:00.130 4: IP: account.komoot.com -> 54.72.14.39
2020.09.19 13:47:00.131 5: komoot: AddToQueue adds type update to URL https://www.komoot.de/community/your-regions, no data, no headers, retry 1, initial queue len: 1
2020.09.19 13:47:00.131 5: komoot: HandleSendQueue called, qlen = 2
2020.09.19 13:47:00.131 5: komoot: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2020.09.19 13:47:00.131 4: komoot: CheckAuth requeued request update after auth, retryCount 0 ...
2020.09.19 13:47:00.274 5: HttpUtils request header:
POST /v1/signin HTTP/1.0
Host: account.komoot.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
Content-Length: 33
Content-Type: application/x-www-form-urlencoded

2020.09.19 13:47:00.323 4: https://account.komoot.com/v1/signin: HTTP response code 200
2020.09.19 13:47:00.323 5: HttpUtils https://account.komoot.com/v1/signin: Got data, length: 37
2020.09.19 13:47:00.324 5: HttpUtils response header:
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:00 GMT
ETag: W/"25-2EfkMpD8JXWf9pKC2xUNUebJFxc"
Server: nginx/1.14.1
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 49
Connection: Close
2020.09.19 13:47:00.324 4: komoot: Read callback: request type was auth01 retry 0,
header: HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:00 GMT
ETag: W/"25-2EfkMpD8JXWf9pKC2xUNUebJFxc"
Server: nginx/1.14.1
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 49
Connection: Close, body length 37
2020.09.19 13:47:00.324 5: komoot: Read callback: body
{"type":null,"error":null,"email":""}
2020.09.19 13:47:00.324 5: komoot: GetCookies is looking for Cookies
2020.09.19 13:47:00.324 5: komoot: ExtractSid called, context sid, num 01
2020.09.19 13:47:01.131 5: komoot: HandleSendQueue called, qlen = 2
2020.09.19 13:47:01.132 5: komoot: HandleSendQueue is using Cookie ka_s.sig with path / and Value MQxvmjlD8zMdTG--MffVJKbn1Tg (key ka_s.sig;/, destination path is /v1/signin)
2020.09.19 13:47:01.132 5: komoot: HandleSendQueue is using Cookie ka_s=eyJsYW5nIjoiZW4ifQ with path / and Value = (key ka_s=eyJsYW5nIjoiZW4ifQ;/, destination path is /v1/signin)
2020.09.19 13:47:01.132 5: komoot: HandleSendQueue is using Cookie kmt_session.sig with path / and Value TeH6fZTwqkPEfyTX1VjHW_lywTA (key kmt_session.sig;/, destination path is /v1/signin)
2020.09.19 13:47:01.132 5: komoot: HandleSendQueue is using Cookie kmt_session with path / and Value eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9 (key kmt_session;/, destination path is /v1/signin)
2020.09.19 13:47:01.132 5: komoot: HandleSendQueue is adding Cookie header: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:01.132 4: komoot: HandleSendQueue sends auth02 with timeout 2 to https://account.komoot.com/v1/signin,
data: {"email":"xx@xx.com","password":"xx","reason":null},
header: Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:01.132 5: HttpUtils url=https://account.komoot.com/v1/signin
2020.09.19 13:47:01.132 4: IP: account.komoot.com -> 54.72.14.39
2020.09.19 13:47:01.286 5: HttpUtils request header:
POST /v1/signin HTTP/1.0
Host: account.komoot.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
Content-Length: 69
Content-Type: application/x-www-form-urlencoded

2020.09.19 13:47:01.340 4: https://account.komoot.com/v1/signin: HTTP response code 200
2020.09.19 13:47:01.340 5: HttpUtils https://account.komoot.com/v1/signin: Got data, length: 37
2020.09.19 13:47:01.340 5: HttpUtils response header:
HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:01 GMT
ETag: W/"25-2EfkMpD8JXWf9pKC2xUNUebJFxc"
Server: nginx/1.14.1
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 49
Connection: Close
2020.09.19 13:47:01.340 4: komoot: Read callback: request type was auth02 retry 0,
header: HTTP/1.1 200 OK
Content-Encoding: gzip
Content-Type: application/json; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:01 GMT
ETag: W/"25-2EfkMpD8JXWf9pKC2xUNUebJFxc"
Server: nginx/1.14.1
Vary: Accept-Encoding
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 49
Connection: Close, body length 37
2020.09.19 13:47:01.340 5: komoot: Read callback: body
{"type":null,"error":null,"email":""}
2020.09.19 13:47:01.340 5: komoot: GetCookies is looking for Cookies
2020.09.19 13:47:01.340 5: komoot: ExtractSid called, context sid, num 02
2020.09.19 13:47:02.132 5: komoot: HandleSendQueue called, qlen = 1
2020.09.19 13:47:02.133 5: komoot: HandleSendQueue is using Cookie ka_s.sig with path / and Value MQxvmjlD8zMdTG--MffVJKbn1Tg (key ka_s.sig;/, destination path is /community/your-regions)
2020.09.19 13:47:02.133 5: komoot: HandleSendQueue is using Cookie ka_s=eyJsYW5nIjoiZW4ifQ with path / and Value = (key ka_s=eyJsYW5nIjoiZW4ifQ;/, destination path is /community/your-regions)
2020.09.19 13:47:02.133 5: komoot: HandleSendQueue is using Cookie kmt_session.sig with path / and Value TeH6fZTwqkPEfyTX1VjHW_lywTA (key kmt_session.sig;/, destination path is /community/your-regions)
2020.09.19 13:47:02.133 5: komoot: HandleSendQueue is using Cookie kmt_session with path / and Value eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9 (key kmt_session;/, destination path is /community/your-regions)
2020.09.19 13:47:02.133 5: komoot: HandleSendQueue is adding Cookie header: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:02.133 4: komoot: HandleSendQueue sends update with timeout 2 to https://www.komoot.de/community/your-regions, No Data,
header: Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:02.133 5: HttpUtils url=https://www.komoot.de/community/your-regions
2020.09.19 13:47:02.133 4: IP: www.komoot.de -> 52.16.197.180
2020.09.19 13:47:02.284 5: HttpUtils request header:
GET /community/your-regions HTTP/1.0
Host: www.komoot.de
User-Agent: fhem
Accept-Encoding: gzip,deflate
Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9

2020.09.19 13:47:02.398 4: https://www.komoot.de/community/your-regions: HTTP response code 403
2020.09.19 13:47:02.398 5: HttpUtils https://www.komoot.de/community/your-regions: Got data, length: 7728
2020.09.19 13:47:02.398 5: HttpUtils response header:
HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:02 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Connection: Close
2020.09.19 13:47:02.398 4: komoot: Read callback: request type was update retry 1,
header: HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:02 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Connection: Close, body length 7728
2020.09.19 13:47:02.398 5: komoot: Read callback: body
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>komoot: 403 Forbidden</title>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <link rel="shortcut icon" href="/icons/favicon.png">

  <style>
    * {
      margin: 0;
      padding: 0;
    }

    h1, p {
      margin-bottom: 12px;
    }

    a {
      color: #1086E8;
    }

    a:hover,
    a:focus,
    a:active {
      color: #1770BA;
      text-decoration: none;
    }

    html {
      background: #F5F4E9;
      font-family: -apple-system,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
      font-size: 16px;
      line-height: 1.5;
      color: #9D9D9D;
      padding: 48px 24px;
    }

    body {
      max-width: 560px;
      background: white;
      box-shadow: 0 6px 24px 6px rgba(0,0,0,.11);
      margin: 0 auto;
      padding: 24px;
    }

    header {
      border-bottom: 1px solid #E5E4D8;
      padding-bottom: 24px;
      margin-bottom: 24px;
    }

    header a {
      display: inline-block;
    }

    header svg {
      vertical-align: bottom;
    }

    h1 {
      font-size: 24px;
      color: #383838;
      margin-top: 0;
    }

    pre {
      color: black;
      font-size: 11px;
      font-family: monospace;
      overflow: auto;
      margin-top: 50px;
    }

    .en {
      margin-bottom: 42px;
    }

  </style>

</head>

<body>
  <header>
     <a href="/">
       <svg width="130" height="32" viewBox="0 0 130 32" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#93D759" offset="0%"/><stop stop-color="#78B34A" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><g><path d="M92.164 20.01c-1.606 0-2.908-1.352-2.908-3.018 0-1.667 1.302-3.018 2.908-3.018 1.605 0 2.907 1.351 2.907 3.018 0 1.666-1.302 3.017-2.907 3.017m0-9.026c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-34.597 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008 0-3.319-2.744-6.008-6.13-6.008zm48.599 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-54.941.335h-4.16l-3.784 4.57V8H40v14.713h3.282v-4.868s4.251 4.872 4.344 4.872c.735.002 4.081 0 4.081 0l-5.461-5.998 4.979-5.401zm70.116 8.842c-1.232.207-1.931-.276-2.222-.574-.299-.307-.521-.8-.521-1.122V14.02h3.062v-2.686h-3.062V8.233h-3.246v3.1h-2.217v2.687h2.217v4.444c0 2.494 2.075 4.524 4.626 4.524 0 0 1.19.043 2.022-.295l-.66-2.533zm-52.243 2.533s-.01-4.455 0-5.89c.002-.375.048-.737.13-1.078.171-.708.463-1.211 1.08-1.496.387-.18.83-.25 1.35-.22.69.043 1.15.351 1.403.944.18.421.205.876.205 1.266.002 1.602.001 6.474.001 6.474h3.174V16.8c0-.475.06-.887.184-1.257.237-.711.647-1.167 1.25-1.393.472-.176.923-.2 1.46-.07.435.104.754.343.977.729.216.375.333.817.336 1.31.008 1.616 0 6.574 0 6.574h3.25v-6.43c0-.355-.018-.726-.05-1.135-.068-.842-.273-1.559-.627-2.193a3.451 3.451 0 0 0-2.117-1.682c-.81-.235-1.678-.27-2.578-.106-.908.166-1.66.585-2.233 1.244-.147.169-.282.35-.412.525l-.029.038c-.334-.642-.802-1.12-1.392-1.423-.924-.474-1.954-.602-3.15-.392-1.067.187-1.788.723-2.36 1.594l-.4-1.396h-2.726v11.356h3.274zm-11.531-2.704c-1.606 0-2.908-1.342-2.908-2.997 0-1.656 1.302-2.998 2.908-2.998 1.605 0 2.907 1.342 2.907 2.998 0 1.655-1.302 2.997-2.907 2.997zm48.599.02c-1.606 0-2.908-1.35-2.908-3.017 0-1.667 1.302-3.018 2.908-3.018 1.606 0 2.907 1.351 2.907 3.018 0 1.666-1.301 3.017-2.907 3.017z" fill="#78B62E"/><path d="M0 16c0 3.745 1.29 7.187 3.446 9.913l8.188-8.188A4.676 4.676 0 0 1 11.303 16a4.697 4.697 0 0 1 9.394 0c0 .61-.12 1.19-.33 1.725l8.187 8.188A15.925 15.925 0 0 0 32 16c0-8.836-7.164-16-16-16S0 7.164 0 16m12.95 3.564l-8 8A15.938 15.938 0 0 0 16 32c4.287 0 8.177-1.69 11.05-4.436l-8-8c-.085.072-3.05-4.776-3.05-4.776s-2.965 4.848-3.05 4.776" fill="url(#a)"/></g></g></svg>
     </a>
  </header>

  <noscript>
  <meta name="refresh" http-equiv="refresh" content="0; url=https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">
</noscript>

<div id="pageMountNode">
  <article class="en">
    <h1>
      Please Hold!
    </h1>
    <p>
      We'll be redirecting you to the <a href="/login">log-in page</a> in just a few seconds.
    </p>
  </article>

  <article class="de">
    <h1>
      Bitte warte einen Augenblick!
    </h1>
    <p>
      Wir leiten dich weiter zur <a href="/login">Login-Seite</a>.
    </p>
  </article>
</div>

<p>Redirect to: <a href="https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">https://account.komoot.com/signin</a></p>
<script>
  (function () {
    var crossLoginFailed = function () {
            location.href = 'https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1';
        };

    // Prevent cicular redirect
    if (/(\?|&)_redirected=/.test(location.search)) {
        return crossLoginFailed();
    }

    // Prepare iframe
    var pageNode = document.getElementById('pageMountNode');
    var iframeNode = document.createElement('iframe');

    iframeNode.src = '/actions/signin/iframe_check';
    iframeNode.style.position = 'absolute';
    iframeNode.style.top = '0';
    iframeNode.style.left = '-10000px';
    iframeNode.style.width = '50px';
    iframeNode.style.height = '50px';
    iframeNode.onload = function (event) {
        try {
            // Read iframe content
            var content = iframeNode.contentWindow && iframeNode.contentWindow.document ? (
                iframeNode.contentWindow.document.body ? iframeNode.contentWindow.document.body.innerHTML : ''
            ) : iframeNode.contentDocument && iframeNode.contentDocument.document ? (
                iframeNode.contentDocument.document.body ? iframeNode.contentDocument.document.body.innerHTML : ''
            ) : '';

            // Remove iframe
            iframeNode.parentNode.removeChild(iframeNode);

            // Redirect
            if (/login_ok/.test(content)) {
                location.href = location.href
                    .replace(/(\?|#|$)/, function (all, key) {
                        if (key === '?') {
                            return '?_redirected=1&';
                        }
                        if (key === '#') {
                            return '?_redirected=1#';
                        }
                        return '?_redirected=1';
                    });
            } else {
               crossLoginFailed();
            }
        } catch (err) {
           crossLoginFailed();
        }
    };
    iframeNode.onerror = function (event) {
        // Remove iframe
        iframeNode.parentNode.removeChild(iframeNode);

        crossLoginFailed();
    };

    pageNode.parentNode.insertBefore(iframeNode, pageNode.nextSibling);
  })();
</script>


  <script>
    // Listen to pop state, getting back button working
    window.addEventListener('popstate', event => {
        if (event.state.path) {
            location.href = event.state.path;
        }
    });

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    window.ga && window.ga('create', 'UA-21610363-1', 'auto');
    window.ga && window.ga('send', 'pageview');
  </script>
</body>
</html>

2020.09.19 13:47:02.399 5: komoot: GetCookies is looking for Cookies
2020.09.19 13:47:02.399 5: komoot: ExtractSid called, context reading, num
2020.09.19 13:47:02.399 5: komoot: GetRegex found precompiled reAuthRegex for  as (?^:.*403.Forbidden.*)
2020.09.19 13:47:02.399 5: komoot: CheckAuth is checking buffer with ReAuthRegex (?^:.*403.Forbidden.*)
2020.09.19 13:47:02.399 4: komoot: CheckAuth decided new authentication required
2020.09.19 13:47:02.399 4: komoot: Authentication still required but no retries left - did last authentication fail?
2020.09.19 13:47:02.399 5: komoot: Read starts parsing response to update with defined readings:
2020.09.19 13:47:02.399 4: komoot: Read response to update didn't match any Reading
2020.09.19 13:47:02.399 5: komoot: HandleSendQueue called, qlen = 0
2020.09.19 13:47:09.794 5: komoot: GetUpdate called (update)
2020.09.19 13:47:09.795 5: komoot: update timer modified: will call GetUpdate in 10.0 seconds at 2020-09-19 13:47:19
2020.09.19 13:47:09.795 5: komoot: AddToQueue adds type update to URL https://www.komoot.de/community/your-regions, no data, no headers, retry 0, initial queue len: 0
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue called, qlen = 1
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue is using Cookie ka_s.sig with path / and Value MQxvmjlD8zMdTG--MffVJKbn1Tg (key ka_s.sig;/, destination path is /community/your-regions)
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue is using Cookie ka_s=eyJsYW5nIjoiZW4ifQ with path / and Value = (key ka_s=eyJsYW5nIjoiZW4ifQ;/, destination path is /community/your-regions)
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue is using Cookie kmt_session.sig with path / and Value TeH6fZTwqkPEfyTX1VjHW_lywTA (key kmt_session.sig;/, destination path is /community/your-regions)
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue is using Cookie kmt_session with path / and Value eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9 (key kmt_session;/, destination path is /community/your-regions)
2020.09.19 13:47:09.796 5: komoot: HandleSendQueue is adding Cookie header: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:09.796 4: komoot: HandleSendQueue sends update with timeout 2 to https://www.komoot.de/community/your-regions, No Data,
header: Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9
2020.09.19 13:47:09.796 5: HttpUtils url=https://www.komoot.de/community/your-regions
2020.09.19 13:47:09.797 4: IP: www.komoot.de -> 52.16.197.180
2020.09.19 13:47:10.550 5: HttpUtils request header:
GET /community/your-regions HTTP/1.0
Host: www.komoot.de
User-Agent: fhem
Accept-Encoding: gzip,deflate
Cookie: ka_s.sig=MQxvmjlD8zMdTG--MffVJKbn1Tg; ka_s=eyJsYW5nIjoiZW4ifQ==; kmt_session.sig=TeH6fZTwqkPEfyTX1VjHW_lywTA; kmt_session=eyJsYW5nIjoiZGUiLCJtZXRyaWMiOnRydWV9

2020.09.19 13:47:10.632 4: https://www.komoot.de/community/your-regions: HTTP response code 403
2020.09.19 13:47:10.632 5: HttpUtils https://www.komoot.de/community/your-regions: Got data, length: 7728
2020.09.19 13:47:10.632 5: HttpUtils response header:
HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:10 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 3106
Connection: Close
2020.09.19 13:47:10.632 4: komoot: Read callback: request type was update retry 0,
header: HTTP/1.1 403 Forbidden
Cache-Control: no-cache, no-store, must-revalidate
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Date: Sat, 19 Sep 2020 11:47:10 GMT
ETag: W/"1e30-dUGc8I2xfRRam6pTW1kQwvwFl9Y"
Expires: 0
Pragma: no-cache
Server: nginx/1.14.1
Vary: Accept-Encoding
X-Powered-By: Express
Content-Length: 3106
Connection: Close, body length 7728
2020.09.19 13:47:10.632 5: komoot: Read callback: body
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>komoot: 403 Forbidden</title>
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  <link rel="shortcut icon" href="/icons/favicon.png">

  <style>
    * {
      margin: 0;
      padding: 0;
    }

    h1, p {
      margin-bottom: 12px;
    }

    a {
      color: #1086E8;
    }

    a:hover,
    a:focus,
    a:active {
      color: #1770BA;
      text-decoration: none;
    }

    html {
      background: #F5F4E9;
      font-family: -apple-system,system-ui,BlinkMacSystemFont,Roboto,"Segoe UI","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";
      font-size: 16px;
      line-height: 1.5;
      color: #9D9D9D;
      padding: 48px 24px;
    }

    body {
      max-width: 560px;
      background: white;
      box-shadow: 0 6px 24px 6px rgba(0,0,0,.11);
      margin: 0 auto;
      padding: 24px;
    }

    header {
      border-bottom: 1px solid #E5E4D8;
      padding-bottom: 24px;
      margin-bottom: 24px;
    }

    header a {
      display: inline-block;
    }

    header svg {
      vertical-align: bottom;
    }

    h1 {
      font-size: 24px;
      color: #383838;
      margin-top: 0;
    }

    pre {
      color: black;
      font-size: 11px;
      font-family: monospace;
      overflow: auto;
      margin-top: 50px;
    }

    .en {
      margin-bottom: 42px;
    }

  </style>

</head>

<body>
  <header>
     <a href="/">
       <svg width="130" height="32" viewBox="0 0 130 32" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient x1="50%" y1="0%" x2="50%" y2="100%" id="a"><stop stop-color="#93D759" offset="0%"/><stop stop-color="#78B34A" offset="100%"/></linearGradient></defs><g fill="none" fill-rule="evenodd"><g><path d="M92.164 20.01c-1.606 0-2.908-1.352-2.908-3.018 0-1.667 1.302-3.018 2.908-3.018 1.605 0 2.907 1.351 2.907 3.018 0 1.666-1.302 3.017-2.907 3.017m0-9.026c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-34.597 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008 0-3.319-2.744-6.008-6.13-6.008zm48.599 0c-3.386 0-6.131 2.69-6.131 6.009 0 3.318 2.745 6.008 6.13 6.008 3.387 0 6.131-2.69 6.131-6.008s-2.744-6.009-6.13-6.009zm-54.941.335h-4.16l-3.784 4.57V8H40v14.713h3.282v-4.868s4.251 4.872 4.344 4.872c.735.002 4.081 0 4.081 0l-5.461-5.998 4.979-5.401zm70.116 8.842c-1.232.207-1.931-.276-2.222-.574-.299-.307-.521-.8-.521-1.122V14.02h3.062v-2.686h-3.062V8.233h-3.246v3.1h-2.217v2.687h2.217v4.444c0 2.494 2.075 4.524 4.626 4.524 0 0 1.19.043 2.022-.295l-.66-2.533zm-52.243 2.533s-.01-4.455 0-5.89c.002-.375.048-.737.13-1.078.171-.708.463-1.211 1.08-1.496.387-.18.83-.25 1.35-.22.69.043 1.15.351 1.403.944.18.421.205.876.205 1.266.002 1.602.001 6.474.001 6.474h3.174V16.8c0-.475.06-.887.184-1.257.237-.711.647-1.167 1.25-1.393.472-.176.923-.2 1.46-.07.435.104.754.343.977.729.216.375.333.817.336 1.31.008 1.616 0 6.574 0 6.574h3.25v-6.43c0-.355-.018-.726-.05-1.135-.068-.842-.273-1.559-.627-2.193a3.451 3.451 0 0 0-2.117-1.682c-.81-.235-1.678-.27-2.578-.106-.908.166-1.66.585-2.233 1.244-.147.169-.282.35-.412.525l-.029.038c-.334-.642-.802-1.12-1.392-1.423-.924-.474-1.954-.602-3.15-.392-1.067.187-1.788.723-2.36 1.594l-.4-1.396h-2.726v11.356h3.274zm-11.531-2.704c-1.606 0-2.908-1.342-2.908-2.997 0-1.656 1.302-2.998 2.908-2.998 1.605 0 2.907 1.342 2.907 2.998 0 1.655-1.302 2.997-2.907 2.997zm48.599.02c-1.606 0-2.908-1.35-2.908-3.017 0-1.667 1.302-3.018 2.908-3.018 1.606 0 2.907 1.351 2.907 3.018 0 1.666-1.301 3.017-2.907 3.017z" fill="#78B62E"/><path d="M0 16c0 3.745 1.29 7.187 3.446 9.913l8.188-8.188A4.676 4.676 0 0 1 11.303 16a4.697 4.697 0 0 1 9.394 0c0 .61-.12 1.19-.33 1.725l8.187 8.188A15.925 15.925 0 0 0 32 16c0-8.836-7.164-16-16-16S0 7.164 0 16m12.95 3.564l-8 8A15.938 15.938 0 0 0 16 32c4.287 0 8.177-1.69 11.05-4.436l-8-8c-.085.072-3.05-4.776-3.05-4.776s-2.965 4.848-3.05 4.776" fill="url(#a)"/></g></g></svg>
     </a>
  </header>

  <noscript>
  <meta name="refresh" http-equiv="refresh" content="0; url=https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">
</noscript>

<div id="pageMountNode">
  <article class="en">
    <h1>
      Please Hold!
    </h1>
    <p>
      We'll be redirecting you to the <a href="/login">log-in page</a> in just a few seconds.
    </p>
  </article>

  <article class="de">
    <h1>
      Bitte warte einen Augenblick!
    </h1>
    <p>
      Wir leiten dich weiter zur <a href="/login">Login-Seite</a>.
    </p>
  </article>
</div>

<p>Redirect to: <a href="https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1">https://account.komoot.com/signin</a></p>
<script>
  (function () {
    var crossLoginFailed = function () {
            location.href = 'https://account.komoot.com/signin?hl=de&redirect=%2Fcommunity%2Fyour-regions%3F_redirected%3D1';
        };

    // Prevent cicular redirect
    if (/(\?|&)_redirected=/.test(location.search)) {
        return crossLoginFailed();
    }

    // Prepare iframe
    var pageNode = document.getElementById('pageMountNode');
    var iframeNode = document.createElement('iframe');

    iframeNode.src = '/actions/signin/iframe_check';
    iframeNode.style.position = 'absolute';
    iframeNode.style.top = '0';
    iframeNode.style.left = '-10000px';
    iframeNode.style.width = '50px';
    iframeNode.style.height = '50px';
    iframeNode.onload = function (event) {
        try {
            // Read iframe content
            var content = iframeNode.contentWindow && iframeNode.contentWindow.document ? (
                iframeNode.contentWindow.document.body ? iframeNode.contentWindow.document.body.innerHTML : ''
            ) : iframeNode.contentDocument && iframeNode.contentDocument.document ? (
                iframeNode.contentDocument.document.body ? iframeNode.contentDocument.document.body.innerHTML : ''
            ) : '';

            // Remove iframe
            iframeNode.parentNode.removeChild(iframeNode);

            // Redirect
            if (/login_ok/.test(content)) {
                location.href = location.href
                    .replace(/(\?|#|$)/, function (all, key) {
                        if (key === '?') {
                            return '?_redirected=1&';
                        }
                        if (key === '#') {
                            return '?_redirected=1#';
                        }
                        return '?_redirected=1';
                    });
            } else {
               crossLoginFailed();
            }
        } catch (err) {
           crossLoginFailed();
        }
    };
    iframeNode.onerror = function (event) {
        // Remove iframe
        iframeNode.parentNode.removeChild(iframeNode);

        crossLoginFailed();
    };

    pageNode.parentNode.insertBefore(iframeNode, pageNode.nextSibling);
  })();
</script>


  <script>
    // Listen to pop state, getting back button working
    window.addEventListener('popstate', event => {
        if (event.state.path) {
            location.href = event.state.path;
        }
    });

    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
    (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
    m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

    window.ga && window.ga('create', 'UA-21610363-1', 'auto');
    window.ga && window.ga('send', 'pageview');
  </script>
</body>
</html>

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 19 September 2020, 14:18:28
Und wo sind die sidHeaders Attribute geblieben? Insb. sidHeader03, bei dem ich gesagt habe, es ist entscheidend?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 19 September 2020, 16:01:53
Danke, du hast Recht, die hatte ich nicht gesetzt!
Resultat: 2020.09.19 15:57:08.986 5: komoot: CheckAuth decided no authentication required
Das Login scheint zu funktionieren, vielen Dank! Das muss ich mir jetzt erstmal anschaune, warum das jetzt so funktioniert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 20 September 2020, 15:39:20
nochmals vielen Dank! Habe mittlerweile in komoot noch bessere Seiten gefunden, die die Daten sofort in JSON zurückliefern, damit funktioniert es auch!!  ;D
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 September 2020, 17:48:36
Hallo,

ich habe die neue Version von HTTPMOD wie angekündigt soeben eingecheckt.
Bitte meldet Euch falls sie doch Probleme macht.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Mitch am 23 September 2020, 17:24:17
Mein go-eCharger geht damit nicht mehr:

2020.09.23 17:14:37 4: go_eCharger: no header to look for redirects
2020.09.23 17:14:37 4: go_eCharger: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:14:37 4: go_eCharger: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:14:37 3: go_eCharger: Read callback: Error: http://192.168.0.81/status: empty answer received
2020.09.23 17:14:37 4: IP: 192.168.0.81 -> 192.168.0.81
2020.09.23 17:14:37 4: go_eCharger: HandleSendQueue sends update with timeout 2 to http://192.168.0.81/status, No Data, No Header
2020.09.23 17:14:37 4: go_eCharger: GetUpdate called (reread)


2020.09.23 17:16:42 4: go_eCharger: no header to look for redirects
2020.09.23 17:16:42 4: go_eCharger: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:16:42 4: go_eCharger: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:16:42 3: go_eCharger: Read callback: Error: http://192.168.0.81/status: empty answer received
2020.09.23 17:16:42 4: IP: 192.168.0.81 -> 192.168.0.81
2020.09.23 17:16:42 4: go_eCharger: HandleSendQueue sends update with timeout 2 to http://192.168.0.81/status, No Data, No Header
2020.09.23 17:16:42 4: go_eCharger: UpdateTimer called from HTTPMOD::GetUpdate with cmd next sets timer to call update function in 60.0 sec at 2020-09-23 17:17:42, interval 60
2020.09.23 17:16:42 4: go_eCharger: GetUpdate called (update)


Alte Version zurück gespielt, alles gut.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hugo Becker am 23 September 2020, 18:24:21
Guten Abend,
auch bei mir funktioniert das Auslesen eines ESP8266 nicht mehr.

2020.09.23 17:39:43 5: espeasy_8: set called with reread
2020.09.23 17:39:43 4: espeasy_8: GetUpdate called (reread)
2020.09.23 17:39:43 5: espeasy_8: AddToQueue adds type update to URL http://192.168.100.71/json, no data, no headers, retry 0, initial queue len: 0
2020.09.23 17:39:43 5: espeasy_8: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.09.23 17:39:43 4: espeasy_8: HandleSendQueue sends update with timeout 2 to http://192.168.100.71/json, No Data, No Header
2020.09.23 17:39:43 5: HttpUtils url=http://192.168.100.71/json
2020.09.23 17:39:43 4: IP: 192.168.100.71 -> 192.168.100.71
2020.09.23 17:39:43 5: HttpUtils request header:
GET /json HTTP/1.0
Host: 192.168.100.71
User-Agent: fhem
Accept-Encoding: gzip,deflate

2020.09.23 17:39:43 3: espeasy_8: Read callback: Error: http://192.168.100.71/json: empty answer received
2020.09.23 17:39:43 4: espeasy_8: Read callback: request type was update retry 0, no headers, no body
2020.09.23 17:39:43 5: espeasy_8: Read callback: body empty
2020.09.23 17:39:43 4: espeasy_8: Read found no charset header (bodyDecode was set to auto)
2020.09.23 17:39:43 5: espeasy_8: GetCookies is looking for Cookies
2020.09.23 17:39:43 5: espeasy_8: ExtractSid called, context reading, num 0
2020.09.23 17:39:43 4: espeasy_8: no header to look for redirects
2020.09.23 17:39:43 5: espeasy_8: Read callback sets LAST_REQUEST to update
2020.09.23 17:39:43 5: espeasy_8: CheckAuth decided no authentication required


Mit der vorherigen Version (98_HTTPMOD.pm 21141 2020-02-07 19:36:06) klappt alles wunderbar.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: guhu am 23 September 2020, 18:31:59
.. mal eine Frage zu HTTPMOD, die ich durch Suche nicht beantworten konnte:
kann man die Elemente eine Arrays filtern anhand eines Wertes? Beispiel: aus folgendem Array nur diejenigen, die 29 Jahre sind:
[
  {
    "name": "Molecule Man",
    "age": 29,
    "secretIdentity": "Dan Jukes",
    "powers": [
      "Radiation resistance",
      "Turning tiny",
      "Radiation blast"
    ]
  },
  {
    "name": "Madame Uppercut",
    "age": 39,
    "secretIdentity": "Jane Wilson",
    "powers": [
      "Million tonne punch",
      "Damage resistance",
      "Superhuman reflexes"
    ]
  }
]
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 September 2020, 18:42:11
Hallo Mitch und Hugo,

könntet Ihr Eure Konfiguration für das HTTPMOD-Device posten?
Ich würde den Fehler gerne Fixen, allerdings vermute ich, dass es schon am Request liegt, der verschickt wird und da bräuchte ich mehr Informationen ...

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 September 2020, 18:45:55
Hallo Guhu,

so spontan fällt mir kein wirklich eleganter Weg ein, ein Array in HTTPMOD zu filtern.
Du könntest sicher mit einer etwas komplexeren Regex arbeiten, dann hast Du aber kein JSON-Parsing mehr.
Oder Du klinkst eine eigene Parse-Funktion in Perl ein.
Oder Du lässt HTTPMOD alles parsen und filterst die Readings später.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 23 September 2020, 19:07:42
Zitat von: guhu am 23 September 2020, 18:31:59
.. mal eine Frage zu HTTPMOD, die ich durch Suche nicht beantworten konnte:
kann man die Elemente eine Arrays filtern anhand eines Wertes? Beispiel: aus folgendem Array nur diejenigen, die 29 Jahre sind:
[
  {
    "name": "Molecule Man",
    "age": 29,
    "secretIdentity": "Dan Jukes",
    "powers": [
      "Radiation resistance",
      "Turning tiny",
      "Radiation blast"
    ]
  },
  {
    "name": "Madame Uppercut",
    "age": 39,
    "secretIdentity": "Jane Wilson",
    "powers": [
      "Million tonne punch",
      "Damage resistance",
      "Superhuman reflexes"
    ]
  }
]

Mit HTTPMOD muss man wahrscheinlich mit readingXXRegex arbeiten, aber das sollte mit JsonMod relativ einfach sein. Etwas wie
multi(jsonPath("\$[?(\@.age == 29)].name")
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Mitch am 23 September 2020, 19:19:35
Zitat von: StefanStrobel am 23 September 2020, 18:42:11
Hallo Mitch und Hugo,

könntet Ihr Eure Konfiguration für das HTTPMOD-Device posten?
Ich würde den Fehler gerne Fixen, allerdings vermute ich, dass es schon am Request liegt, der verschickt wird und da bräuchte ich mehr Informationen ...

Gruss / Thanx
    Stefan

defmod go_eCharger HTTPMOD http://192.168.0.81/status 60
attr go_eCharger userattr device_timeout set01IMap set01Name set01URL set02IMap set02Name set02URL
attr go_eCharger DbLogInclude Charge_Netto,CostPerDay,CostTotal,Leistung_gesamt,nrg_0,Charge_Last,Charge_Cost,day,nrg_4,nrg_7,nrg_12
attr go_eCharger alias e-goCharger Mobil
attr go_eCharger comment CostPerDay, CostTotal {ReadingsVal($name,"eto","")* 0.0292}, Cost_ID1 {ReadingsVal($name,"eca","")* 0.0292}, Cost_ID2 {ReadingsVal($name,"ecr","")* 0.0292}, Leistung_gesamt {ReadingsNum("go_eCharger","nrg_11","")*10}, summe monotonic {ReadingsNum($name,"eto",0)/10}, Charge_Already {ReadingsNum($name,"eto",0) / 10 - ReadingsNum($name,"Charge_Start",0)}, Reichweite {ReadingsVal($name,"Charge_Already","")*5.56}
attr go_eCharger extractAllJSON 1
attr go_eCharger group Outlander
attr go_eCharger icon eco34
attr go_eCharger room Outlander
attr go_eCharger set01IMap 0:off, 1:on
attr go_eCharger set01Name Ladung
attr go_eCharger set01URL http://192.168.0.81:80/mqtt?payload=alw=$val
attr go_eCharger sortby 1
attr go_eCharger stateFormat {\
my $state = lc ReadingsVal($name, "car", "1");;\
my $devStateIcon = 'eco20.svg';;\
\
if ($state eq "2")\
{\
$devStateIcon = 'eco25.svg';;\
}\
\
if ($state eq "3")\
{\
$devStateIcon = 'eco26.svg';;\
}\
            \
if ($state eq "4")\
{\
$devStateIcon = 'eco24.svg';;\
}\
\
"<div><img width='32px' height='32px' src='/fhem/images/fhemSVG/" . $devStateIcon . "'>" . sprintf(\
        "&nbsp;;&nbsp;;%s - %s<br/>%s<br/>Strom: %d A - aktuell: %d A, %.1f kW<br/>Ladung Total: %.1f kWh/%.2f € - Ladung ID1: %.1f kWh/%.2f €, ID2: %.1f kWh/%.2f €<br/><br/>Bereits geladen: %.1f kWh entspricht ca. %s km<br/>Letzte Ladung: %.1f kWh/%.2f € - Netto: %.1f kWh<br/><br/>Temperatur: %d °C<br>Firmwareversion: %s %s",\
ReadingsVal($name,"car",0)==1?"Ladestation bereit, kein Fahrzeug":\
ReadingsVal($name,"car",0)==2?"Fahrzeug lädt":\
ReadingsVal($name,"car",0)==3?"Warte auf Fahrzeug":\
ReadingsVal($name,"car",0)==4?"Ladung beendet, Fahrzeug noch verbunden":"unknown",\
ReadingsVal($name,"alw",0)==1?"Ladung freigegeben":\
ReadingsVal($name,"alw",0)==0?"Ladung nicht freigegeben":"",\
ReadingsVal($name,"err",0)==1?"Fehler RCCB (Fehlerstromschutzschalter)":\
ReadingsVal($name,"err",0)==3?"Fehler PHASE (Phasenstörung)":\
ReadingsVal($name,"err",0)==8?"Fehler NO_GROUND (Erdungserkennung)":\
ReadingsVal($name,"err",0)==10?"Fehler INTERNAL (sonstiges)":"",\
ReadingsVal($name,"amp",0),\
ReadingsVal($name,"nrg_4",0)/10,\
ReadingsVal($name,"nrg_7",0)/10,\
ReadingsVal($name,"eto",0)/10,\
ReadingsVal($name,"CostTotal",0),\
ReadingsVal($name,"eca",0)/10,\
ReadingsVal($name,"Cost_ID1",0),\
ReadingsVal($name,"ecr",0)/10,\
ReadingsVal($name,"Cost_ID2",0),\
ReadingsVal($name,"Charge_Already",0),\
ReadingsVal($name,"Reichweite",0),\
ReadingsVal($name,"Charge_Last",0),\
ReadingsVal($name,"Charge_Cost",0),\
ReadingsVal($name,"Charge_Netto",0),\
ReadingsVal($name,"tmp",0),\
ReadingsVal($name,"fwv",0),\
ReadingsVal($name,"upd",0)==1?" - Update verfügbar!":"",\
)}
attr go_eCharger userReadings Leistung_gesamt {ReadingsNum("go_eCharger","nrg_11","-1")*10}, CostTotal {ReadingsNum("go_eCharger","eto","")* 0.0292}, Cost_ID1 {ReadingsNum("go_eCharger","eca","")* 0.0292}, Cost_ID2 {ReadingsNum("go_eCharger","ecr","")* 0.0292}, summe monotonic {ReadingsNum("go_eCharger","eto",0)/10}, Charge_Already {ReadingsNum("go_eCharger","eto",0) / 10 - ReadingsNum("go_eCharger","Charge_Start",0)}, Reichweite {ReadingsNum("go_eCharger","Charge_Already","")*5.56}
attr go_eCharger verbose 0
attr go_eCharger webCmd Ladung
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hugo Becker am 23 September 2020, 19:24:28
...und hier meine Konfig:

defmod espeasy_8 HTTPMOD http://192.168.100.71/json 300
attr espeasy_8 userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex
attr espeasy_8 cmdIcon reread:icoUpdate
attr espeasy_8 devStateStyle style=font-weight:bold;;;;font-size:16px;;;;color:yellow
attr espeasy_8 enableControlSet 1
attr espeasy_8 enableCookies 1
attr espeasy_8 icon espeasy
attr espeasy_8 reading01Name hostname
attr espeasy_8 reading01Regex "Hostname":"([0-9\-]+)
attr espeasy_8 reading02Name ip_config
attr espeasy_8 reading02Regex "IP Config":"([a-zA-Z]+)
attr espeasy_8 reading03Name ip_address
attr espeasy_8 reading03Regex "IP Address":"([0-9\.]+)
attr espeasy_8 reading04Name ip_subnet
attr espeasy_8 reading04Regex "IP Subnet":"([0-9\.]+)
attr espeasy_8 reading05Name gateway
attr espeasy_8 reading05Regex "Gateway":"([0-9\.]+)
attr espeasy_8 reading06Name ssid
attr espeasy_8 reading06Regex "SSID":"([a-zA-Z0-9\_\-\.]+)
attr espeasy_8 reading07Name rssi
attr espeasy_8 reading07Regex "RSSI":([0-9\-\+\.]+)
attr espeasy_8 reading08Name mac_address
attr espeasy_8 reading08Regex "STA MAC":"([a-zA-Z0-9\:]+)
attr espeasy_8 showBody 1
attr espeasy_8 stateFormat Hostname: &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; &nbsp;; <font size='2' color='orange'>hostname<br>\
<font size='3' color='yellow'>IP:&nbsp;; <font size='2' color='orange'>ip_address (ip_config)<br>\
<font size='3' color='yellow'>Subnet:&nbsp;; &nbsp;; &nbsp;; <font size='2' color='orange'>ip_subnet<br>\
<font size='3' color='yellow'>Gateway: <font size='2' color='orange'>gateway<br>\
<font size='3' color='yellow'>MAC: &nbsp;; <font size='2' color='orange'>mac_address<br>\
<font size='3' color='yellow'>WLAN:&nbsp;; <font size='2' color='orange'>ssid (rssi dB)<br>\
<br>\
<font size='2' color='lightgrey'> lastAkt
attr espeasy_8 timeout 15
attr espeasy_8 userReadings lastAkt { ReadingsTimestamp("espeasy_8","hostname",0) }
attr espeasy_8 webCmd reread
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rx am 24 September 2020, 10:34:28
Ich habe einen ähnlichen Fehler, Aufruf mit Curl oder via netcat funktioniert. Der Aufruf via HTTPMOD gibt einen NGINX-Returncode 499 zurück. Aus dem Logfile:


2020.09.24 00:15:00.060 4: foo2: GetUpdate called (update)
2020.09.24 00:15:00.060 4: foo2: UpdateTimer called from HTTPMOD::GetUpdate with cmd next sets timer to call update function in 6.0 sec at 2020-09-24 00:15:06, interval 6
2020.09.24 00:15:00.061 5: foo2: AddToQueue adds type update to URL http://192.168.179.222/fhem/test.php, no data, no headers, retry 0, initial queue len: 0
2020.09.24 00:15:00.061 5: foo2: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.09.24 00:15:00.062 4: foo2: HandleSendQueue sends update with timeout 2 to http://192.168.179.222/fhem/test.php, No Data, No Header
2020.09.24 00:15:00.062 5: HttpUtils url=http://192.168.179.222/fhem/test.php
2020.09.24 00:15:00.062 4: IP: 192.168.179.222 -> 192.168.179.222
2020.09.24 00:15:00.064 5: HttpUtils request header:
GET /fhem/test.php HTTP/1.0
Host: 192.168.179.222
User-Agent: fhem
Accept-Encoding: gzip,deflate

2020.09.24 00:15:00.068 3: foo2: Read callback: Error: http://192.168.179.222/fhem/test.php: empty answer received
2020.09.24 00:15:00.068 4: foo2: Read callback: request type was update retry 0, no headers, no body
2020.09.24 00:15:00.068 5: foo2: Read callback: body empty
2020.09.24 00:15:00.069 5: foo2: ExtractSid called, context reading, num 0
2020.09.24 00:15:00.069 5: foo2: Read callback sets LAST_REQUEST to update
2020.09.24 00:15:00.069 5: foo2: CheckAuth decided no authentication required
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 September 2020, 19:39:28
Ich habe vorerst die alte Version wieder eingecheckt bis ich das Problem gefunden habe.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 24 September 2020, 21:56:06
Mit der (ex-)neuen Version scheint auch "sid01IgnoreRedirects 1" ignoriert zu werden.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: MiK77 am 26 September 2020, 00:50:29
Bei mir geht nach dem fhem-Update nun auch kein Befehl mehr über HTTPMOD an meine ESP8266 raus.

Welche Version wird denn im Moment ausgeliefert? Wie komme ich schnell wieder zu einer funktionierenden Version?

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 26 September 2020, 00:51:49
Zitat von: MiK77 am 26 September 2020, 00:50:29
Bei mir geht nach dem fhem-Update nun auch kein Befehl mehr über HTTPMOD an meine ESP8266 raus.

Welche Version wird denn im Moment ausgeliefert? Wie komme ich schnell wieder zu einer funktionierenden Version?
Mit einem update, da Stefan die alte Version wieder eingecheckt hat
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: MiK77 am 26 September 2020, 01:04:23
Durch das Update gerade kamen ja gerade erst die Probleme. Durch einen Reboot haben sie sich aber gerade gelöst. Sorry für die voreilige Nachfrage!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 26 September 2020, 13:01:59
Hallo,

hier wieder eine neue Version zum Testen.
Das Problem lag in der Übergabe der Optionen an HttpUtils.

Bei der Gelegenheit habe ich den Übergabe-Hash für die HttpUtils vom HTTPMOD-Device-Hash entkoppelt.
Das war eigentlich eine Altlast und schon lange nötig. Ich hoffe, dass dadurch keine neuen Probleme entstehen, wenn jemand in Expressions o.ä. auf Keys von $hash zugreift.
Falls doch, kann man den Übergabe-Hash von den HttpUtils jetzt als $hash->{HttpUtils} erreichen. Der Rückgabewert 'addr' von HttpUtils, der bei HTTPMOD bisher z.B. als $hash->{addr} erreichbar war, wäre jetzt $hash->{HttpUtils}{addr}.
Ich vermute aber, dass das sowieso niemand gemacht hat.

Bei der Gelegenheit habe ich auch andere Keys von $hash entfernt / unsichtbar gemacht, die vermutlich völlig überflüssig gespeichert wurden.
Solche Dinge wie $hash->{JSONEnabled}, $hash->{TimeAlign} o.ä. sind jetzt umbenannt und beginnen mit einem ".", also z.B. $hash->{.TimeAlign}.
Falls die doch jemand benötigt, kann ich sie auch wieder reinnehmen.

Das HTTPMOD-Modul gehört ins Unterverzeichnis FHEM, das zugehörige Utils-Modul nach lib/FHEM/HTTPMOD/

Gruss
    Stefan

EDIT 12.10.39: Anhang entfernt, neuere Version kommt später
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hugo Becker am 28 September 2020, 10:49:30
Hallo Stefan,

kurzes Feedback: bei mir tritt der Fehler mit der "neuen Version zum Testen" nicht mehr auf.

Gruß Hugo
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 September 2020, 19:42:22
Hallo Hugo,

vielen Dank für Dein Feedback.
Ich würde dann demnächst die neue Version wieder einchecken und hoffen, dass es nicht noch mehr Probleme / Bugs gibt.
Die Änderungen waren in Summe dann doch umfangreich.

@amenomade: mir wäre wohler dabei wenn Du auch nochmal Deine Devices mit der neuen Version testen könntest, bevor ich es mit dem Einchecken wieder versuche :-)

Gruss / Thanx
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 29 September 2020, 20:25:58
Hallo Stefan

Werde ich auch machen, aber ich werde diese Woche wenig Zeit dafür haben. Ich hoffe bis Samstag.

Gruß

EDIT:
Zitatdas zugehörige Utils-Modul nach lib/FHEM/HTTPMOD/
. Dieses ist nicht angehängt. Hat es sich nicht geändert?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 30 September 2020, 01:19:47
Ich weiss nicht mit dem Util Modul (hab die svn Version), aber dieses HTTPMOD funktionniert mit der svn Version von 98_HTTPMOD und mit der neuen nicht mehr:
defmod BusfahrPlan_ZOB HTTPMOD https://webapi.vvo-online.de/dm?format=json&mot=CityBus&mot=IntercityBus&stopid=33003371&limit=32 0
attr BusfahrPlan_ZOB userattr reading01AlwaysNum reading01AutoNumLen reading01JSON reading01Name reading01OExpr
attr BusfahrPlan_ZOB reading01AlwaysNum 1
attr BusfahrPlan_ZOB reading01AutoNumLen 2
attr BusfahrPlan_ZOB reading01JSON Departures_.*_ScheduledTime
attr BusfahrPlan_ZOB reading01Name Zeit
attr BusfahrPlan_ZOB reading01OExpr strftime("%H:%M",localtime(substr($val,6,10)))
attr BusfahrPlan_ZOB room HTTPMOD Tests
attr BusfahrPlan_ZOB verbose 5


Log:
2020.09.30 01:13:28 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4590.
2020.09.30 01:13:28 1: stacktrace:
2020.09.30 01:13:28 1:     main::__ANON__                      called by fhem.pl (4590)
2020.09.30 01:13:28 1:     main::AttrVal                       called by ./FHEM/98_HTTPMOD.pm (2522)
2020.09.30 01:13:28 1:     HTTPMOD::ReadyForSending            called by ./FHEM/98_HTTPMOD.pm (2579)
2020.09.30 01:13:28 1:     HTTPMOD::HandleSendQueue            called by ./FHEM/98_HTTPMOD.pm (2640)
2020.09.30 01:13:28 1:     HTTPMOD::AddToSendQueue             called by ./FHEM/98_HTTPMOD.pm (1338)
2020.09.30 01:13:28 1:     HTTPMOD::GetUpdate                  called by ./FHEM/98_HTTPMOD.pm (1131)
2020.09.30 01:13:28 1:     HTTPMOD::ControlSet                 called by ./FHEM/98_HTTPMOD.pm (1179)
2020.09.30 01:13:28 1:     HTTPMOD::SetFn                      called by fhem.pl (3812)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (1923)
2020.09.30 01:13:28 1:     main::DoSet                         called by fhem.pl (1955)
2020.09.30 01:13:28 1:     main::CommandSet                    called by fhem.pl (1255)
2020.09.30 01:13:28 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.30 01:13:28 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (984)
2020.09.30 01:13:28 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.30 01:13:28 1:     main::FW_Read                       called by fhem.pl (3817)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (763)
2020.09.30 01:13:28 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4590.
2020.09.30 01:13:28 1: stacktrace:
2020.09.30 01:13:28 1:     main::__ANON__                      called by fhem.pl (4590)
2020.09.30 01:13:28 1:     main::AttrVal                       called by ./FHEM/98_HTTPMOD.pm (2541)
2020.09.30 01:13:28 1:     HTTPMOD::ReadyForSending            called by ./FHEM/98_HTTPMOD.pm (2579)
2020.09.30 01:13:28 1:     HTTPMOD::HandleSendQueue            called by ./FHEM/98_HTTPMOD.pm (2640)
2020.09.30 01:13:28 1:     HTTPMOD::AddToSendQueue             called by ./FHEM/98_HTTPMOD.pm (1338)
2020.09.30 01:13:28 1:     HTTPMOD::GetUpdate                  called by ./FHEM/98_HTTPMOD.pm (1131)
2020.09.30 01:13:28 1:     HTTPMOD::ControlSet                 called by ./FHEM/98_HTTPMOD.pm (1179)
2020.09.30 01:13:28 1:     HTTPMOD::SetFn                      called by fhem.pl (3812)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (1923)
2020.09.30 01:13:28 1:     main::DoSet                         called by fhem.pl (1955)
2020.09.30 01:13:28 1:     main::CommandSet                    called by fhem.pl (1255)
2020.09.30 01:13:28 1:     main::AnalyzeCommand                called by ./FHEM/01_FHEMWEB.pm (2715)
2020.09.30 01:13:28 1:     main::FW_fC                         called by ./FHEM/01_FHEMWEB.pm (984)
2020.09.30 01:13:28 1:     main::FW_answerCall                 called by ./FHEM/01_FHEMWEB.pm (592)
2020.09.30 01:13:28 1:     main::FW_Read                       called by fhem.pl (3817)
2020.09.30 01:13:28 1:     main::CallFn                        called by fhem.pl (763)
2020.09.30 01:13:28 3: BusfahrPlan_ZOB: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 225 (before "\x{fc}d","Platform":...") at lib/FHEM/HTTPMOD/Utils.pm line 508.


Ich mache weitere Tests in der Woche noch.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 Oktober 2020, 11:15:18
Moin, ich habe da mal eine Frage.

In der get URL sind in meinem Fall zwei Parameter, gibt es da eine Möglichkeit diese, wie z.B. mit set Hint einzulesen?
Beim Hint schaffe ich es auch nur immer nur einen Parameter auszuwählen, gehen da auch zwei?
Momentan setze ich als workaround je ein reading und ersetze dieses dann. Hierbei kann ich jedoch auch nicht, wie beim Dummy ein reading selektierbar machen.


get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Oktober 2020, 16:38:29
Hallo Christian,

wie meinst Du das mit set Hint?
möchtest Du die zu ersetzenden Werte mit einem set-Befehl festlegen?
Dann würde ich das über Readings und mit setreading machen. Irgendwo müssen die Werte ja gespeichert sein.
Aber was meinst Du mit selektierbarem Reading?
Ich stehe da gerade auf dem Schlauch ;-)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 Oktober 2020, 16:40:22
Hallo,

sorry - beim letzten Posten der neuen Version hätte ich die Utils ebenfalls posten sollen.
Hier wieder eine neue Version. Ich habe inzwischen auch noch weitere Grundfunktionen aus HTTPMOD in die Utils verschoben, da ich die auch im Modbus-Modul verwende.

Gruss
   Stefan

EDIT 12.10.39: Anhang entfernt, neuere Version kommt später
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 Oktober 2020, 17:54:17
Zitat von: StefanStrobel am 10 Oktober 2020, 16:38:29
wie meinst Du das mit set Hint?
möchtest Du die zu ersetzenden Werte mit einem set-Befehl festlegen?
Dann würde ich das über Readings und mit setreading machen. Irgendwo müssen die Werte ja gespeichert sein.
Aber was meinst Du mit selektierbarem Reading?
Ich stehe da gerade auf dem Schlauch ;-)

Mit

set48Hint slider,4,1,15

bekomme ich einen Slider beim set Kommando, ich habe jedoch mehrere Werte für eine URL zu setzen.

Beim Dummy gibt es diese Möglichkeit, die ich mir beim HTTPMOD auch wünschen würde :-)

attr Pool readingList Pool_Button PowerLevelMinTime PowerLimitOn PowerLimitOff RunTimeMin RunTimePerDay RunTimePerDaySummer RunTimePerDayWinter SetCmdOff SetCmdOn TimeStartSummer TimeStartWinter TimeEnd
attr Pool setList Pool_Button:uzsuToggle,on,off PowerLevelMinTime:slider,30,30,300 PowerLimitOn:slider,500,100,1500 PowerLimitOff:slider,0,100,1000 RunTimeMin:slider,300,300,7200 RunTimePerDay:slider,900,300,64800 RunTimePerDaySummer:slider,900,300,7200 RunTimePerDayWinter:slider,3600,900,64800 SetCmdOff SetCmdOn TimeStartSummer:time TimeStartWinter:time TimeEnd:time


Dann steht alles in den readings, die ich dann mit "replacementMode reading" in der URL verwenden könnte.

Vielen Dank für Dein Gehör
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Oktober 2020, 16:44:27
Hallo Christian,

auch bei dem Dummy musst Du aber mehrfach einzeln einen Wert auswählen und auf "set" drücken oder?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 11 Oktober 2020, 16:58:02
Er möchtet mehrere Readings zuerst setzen, und die dann gleichzeitig (im gleichen HTTPMOD set) mit replacementMode reading nutzen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 Oktober 2020, 17:02:54
Zitat von: StefanStrobel am 11 Oktober 2020, 16:44:27
auch bei dem Dummy musst Du aber mehrfach einzeln einen Wert auswählen und auf "set" drücken oder?
Ja, jedoch kann ich so mit klicky klicky die Auswahl vorbereiten und dann eine Aktion durchführen.
Mehrere Selektierbare Werte in einer Reihe beim set Befehl wären natürlich die Krönung :-)

Momentan get ja schon eine Auswahl und ich müsste Jahr, Monat,Tag und Offset setzen
Also z.B. so

set01Hint select,1,1,10; open,close; select,2020,1,2030; select,01,1,12
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Slanesh am 12 Oktober 2020, 12:37:15
Hallo zusammen,

ich habe mich über das Wochenende erstmals mit dem HTTPMOD beschäftigt, um den Ladastatus meines Autos aus der Wallbox auszulesen.

List vom Device:
Internals:
   BUSY       0
   CFGFN     
   DEF        http://192.168.1.32/status.shtml 300
   FUUID      5f83e9d7-f33f-799c-ccd9-c8e850fecfb62c6e
   Interval   300
   LASTSEND   1602496391.74844
   MainURL    http://192.168.1.32/status.shtml
   ModuleVersion 4.0.06 - 26.9.2020
   NAME       HT_GA_Wallbox
   NOTIFYDEV  global
   NR         52713
   NTFY_ORDER 50-HT_GA_Wallbox
   STATE      1
   TRIGGERTIME 1602496691.74468
   TRIGGERTIME_FMT 2020-10-12 11:58:11
   TYPE       HTTPMOD
   addr       http://192.168.1.32:80
   auth       0
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.1.32/status.shtml
   header     
   host       192.168.1.32
   httpbody   
<html><head>
<meta charset="utf-8">
<link href="./styles.css" type="text/css" rel="stylesheet" media="screen"><title>KeContact P30</title>

</head>

<body>
<h3>Status</h3>

<table class="status">
<tr>
<td class="left">
Product-ID
</td>
<td class="right">
<!--# SerNo -->KC-P30-EC240422-E0R-SN:19895047 ML:19815655
</td>
</tr>

<tr>
<td>
MAC Address
</td>
<td>
<!--# MAC -->00:60:b5:3c:79:16
</td>
</tr>
<tr>
<td>
Software
</td>
<td>
<!--# VERSION -->P30 v 3.10.7 (191213-101735) : 11358 : 318.0 : 2040003
</td>
</tr>

<tr>
<td>
Service Info
</td>
<td>
<!--# TempC -->0 : 0<br>1 : 1 : 0 : 0 : 554<br>0 : 1 : 1
</td>
</tr>

<tr>
<td>
State / Seconds
</td>
<td>
<!--# State --><b>plugged</b> : seconds : 18491722
</td>
</tr>

<tr>
<td>
Current limit (PWM | hardware setup)
</td>
<td>
<!--# Avail -->20,00A (33,3% duty cycle | 20A)
</td>
</tr>

</table>

<h3>Energy Monitor</h3>

<body>
<table class="status">

<tr>
<td class="left">
Voltage
</td>
<td class="right">
<!--# Volt -->227 | 229 | 231 V
</td>
</tr>

<tr>
<td>
Current
</td>
<td>
<!--# Curr -->0,00 | 0,00 | 0,00 A
</td>
</tr>

<tr>
<td>
RealPower | PowerFactor
</td>
<td>
<!--# Power --><b>0,00 kW | 0,0 %</b>
</td>
</tr>

<tr>
<td>
Energy (present session)
</td>
<td>
<!--# Energy --><b>26,31</b> kWh
</td>
</tr>

<tr>
<td>
Energy (total)
</td>
<td>
<!--# EnTotal --><b>26,31</b> kWh
</td>
</tr>

<tr>
<td>
Energy (housegrid meter) in | out
</td>
<td>
<!--# EnHouse -->-,--
</td>
</tr>

<tr>
<td>
Energy (solar meter) in | out
</td>
<td>
<!--# EnSolar -->-,--
</td>
</tr>
</table>

<br>
<span style="font-size:80%">Voltage and current show present values for L1 | L2 | L3<br>
Values displayed may not be used for billing purposes<br>
Energy monitor values shown as -,-- indicate : not available with this product</span>
</body></html>

   httpheader HTTP/1.0 200 OK
Server: lwIP/1.3.2 (http://www.sics.se/~adam/lwip/)
Content-type: text/html
Expires: Fri, 10 Apr 2008 14:00:00 GMT
Pragma: no-cache
   httpversion 1.0
   hu_blocking 0
   hu_filecount 59
   hu_port    80
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /status.shtml
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.1.32/status.shtml
   value      0
   CompiledRegexes:
   QUEUE:
   READINGS:
     2020-10-12 11:48:11   SerialNo        1
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.1.32/status.shtml
     value      0
   defptr:
     readingBase:
       SerialNo   reading
     readingNum:
       SerialNo   1
     readingOutdated:
     requestReadings:
       update:
         SerialNo   reading 1
   sslargs:
Attributes:
   reading1Name State
   reading1Regex State=<!--# State -->.*
   showBody   1
   stateFormat State
   userattr   reading1Name reading1Regex


Ich würde gerne den im Body ausgegebenen Wert hinter "<!--# State -->" (z.B. charging, plugged) als Status des Devices verwenden. In der Form wie ich es hier gebaut habe, bekomme ich aber immer den Wert 1 für reading1 bzw. Device-State ausgegeben. 

Ich muss dazusagen, dass ich mich das erste Mal mit regulären Ausdrücken beschäftige und hier das Problem vermute. Den Body habe ich mit der RegEx auf https://regex101.com/ getestet. Kann es sein, dass in FHEM die Sonderzeichen (<,!,-,#) als Bestandteil der RegEx interpretiert werden und irgendwie "escaped" werden müssen?

Viele Grüße
Slanesh
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 12 Oktober 2020, 13:03:22
Du brauchst ein "capturing group" in Klammern, um den Wert zu bekommen, sonnst kriegst Du nur 1 = "hat gematcht"

reading1Regex <!--# State --><b>(.*?)<
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Oktober 2020, 18:38:14
Hallo Christian,

ich versuche das mal für mich zu übersetzen:
HTTPMOD sollte per definierbarem Set-Befehl temporäre Werte sammeln, die dann bei einem weiteren Set-Befehl gemeinsam in den HTTP-Request eingebaut werden können.
Mehrere Werte in einer Zeile wären eine Sache, die ich eher bei Fhemweb sehe. Wenn das dort unterstützt wäre, könnte man mit einem geeigneten Hint z.B. eine Liste von Werten in ein Reading setzen. Ohne das bleibt uns nach meinem Verständnis nur der Weg, der auch schon bei Dummies geht.
Das könnte dann so aussehen, dass man z.B. set05Temp 1 setzt, damit HTTPMOD den gesetzten Wert einfach in ein Reading mit dem bei set05Name angegebenen Wert setzt und keinen HTTP-Request absetzen möchte. Dann bräuchte man dafür keinen Dummy.
Ein Replacement bräuchte man aber immer noch, denn sonst kann HTTPMOD ja nicht erkennen, welcher Wert wohin gehört. Das kann aber ein einziges generisches Replacement mit Mode expression sein.
Würde das passen?

Ich hab das in der angehängten Version mal ausprobiert...

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 12 Oktober 2020, 19:28:27
Zitat von: StefanStrobel am 12 Oktober 2020, 18:38:14
Hallo Christian,

ich versuche das mal für mich zu übersetzen:
HTTPMOD sollte per definierbarem Set-Befehl temporäre Werte sammeln, die dann bei einem weiteren Set-Befehl gemeinsam in den HTTP-Request eingebaut werden können.
Mehrere Werte in einer Zeile wären eine Sache, die ich eher bei Fhemweb sehe. Wenn das dort unterstützt wäre, könnte man mit einem geeigneten Hint z.B. eine Liste von Werten in ein Reading setzen. Ohne das bleibt uns nach meinem Verständnis nur der Weg, der auch schon bei Dummies geht.
Das könnte dann so aussehen, dass man z.B. set05Temp 1 setzt, damit HTTPMOD den gesetzten Wert einfach in ein Reading mit dem bei set05Name angegebenen Wert setzt und keinen HTTP-Request absetzen möchte. Dann bräuchte man dafür keinen Dummy.
Ein Replacement bräuchte man aber immer noch, denn sonst kann HTTPMOD ja nicht erkennen, welcher Wert wohin gehört. Das kann aber ein einziges generisches Replacement mit Mode expression sein.
Würde das passen?

Ich hab das in der angehängten Version mal ausprobiert...

Gruss
    Stefan
Hallo Stefan,

das schau ich mit morgen dann mal an.
Ich glaube Du denkst zu kompliziert!

ZitatMehrere Werte in einer Zeile wären eine Sache, die ich eher bei Fhemweb sehe.
Das scheint aber im Dummy implementiert zu sein.

Ich verwende nur das FhemWeb und genau da wird es gebraucht.
Mit der Implementierung wie beim Dummy, kann man einfach im Fhemweb die definierten readings mit Slidern und Auswahllisten neu setzen.
Danach wird das HTTPMOD dann ganz normal ausgeführt und nutzt quasi die readings mit der replacement Möglichkeit als Variablen.

Wie gesagt wäre mehrere Pulldowns und Slider in einer set Befehlsreihe die Krönung, aber das sehe ich auch eher beim Fhemweb.
Eine select Möglichkeit hast Du ja bereits mit set**Hint drin.

Hier mal ein Dummy Beispiel, was ich für die Beeinflussung von DOIFs und die Konfiguration verwende.

defmod Pool dummy
attr Pool DbLogExclude .*
attr Pool DbLogInclude state
attr Pool alias Pool_Softube
attr Pool event-on-change-reading .*
attr Pool group PV Eigenverbrauch
attr Pool icon scene_swimming
attr Pool readingList Pool_Button PowerLevelMinTime PowerLimitOn PowerLimitOff RunTimeMin RunTimePerDay RunTimePerDaySummer RunTimePerDayWinter SetCmdOff SetCmdOn TimeStartSummer TimeStartWinter TimeEnd
attr Pool room Strom->Photovoltaik
attr Pool setList Pool_Button:uzsuToggle,on,off PowerLevelMinTime:slider,30,30,300 PowerLimitOn:slider,500,100,1500 PowerLimitOff:slider,0,100,1000 RunTimeMin:slider,300,300,7200 RunTimePerDay:slider,900,300,64800 RunTimePerDaySummer:slider,900,300,7200 RunTimePerDayWinter:slider,3600,900,64800 SetCmdOff SetCmdOn TimeStartSummer:time TimeStartWinter:time TimeEnd:time
attr Pool sortby 06
attr Pool stateFormat state
attr Pool verbose 0
attr Pool webCmd Pool_Button

setstate Pool off
setstate Pool 2020-10-12 16:06:02 Pool_Button off
setstate Pool 2019-12-02 10:31:26 PowerLevelMinTime 600
setstate Pool 2019-11-13 10:58:18 PowerLimitOff 800
setstate Pool 2019-11-06 11:49:00 PowerLimitOn 1000
setstate Pool 2020-10-06 14:16:57 RunTimeMin 3600
setstate Pool 2020-10-12 06:15:00 RunTimePerDay 28800
setstate Pool 2020-08-16 13:17:45 RunTimePerDaySummer 3600
setstate Pool 2020-10-06 14:14:13 RunTimePerDayWinter 28800
setstate Pool 2019-08-01 14:18:08 SetCmdOff set shelly02 off 0
setstate Pool 2019-08-02 09:33:06 SetCmdOn set shelly02 on 0
setstate Pool 2019-10-31 21:53:28 TimeEnd 16:00
setstate Pool 2020-10-12 07:17:00 TimeStart 09:10
setstate Pool 2020-09-03 13:01:40 TimeStartSummer 12:30
setstate Pool 2020-09-03 13:10:56 TimeStartWinter 09:10
setstate Pool 2020-10-12 16:06:02 state off

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Oktober 2020, 19:33:27
Hallo,

Ich habe die neue Version eingecheckt und hoffe, dass es keine größeren Probleme damit gibt.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 20 Oktober 2020, 19:50:52
Zitat von: StefanStrobel am 20 Oktober 2020, 19:33:27
Ich habe die neue Version eingecheckt und hoffe, dass es keine größeren Probleme damit gibt.
Ist da meine komische Idee mit dem setList und readingList auch schon mit drin?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 Oktober 2020, 19:56:06
Hallo Christian,

set01Temp o.ä. ist da mit drin. Im Prinzip müsstest Du damit das machen können, was Du möchtest, nur eben nicht in einer setList-Zeile, sondern so wie das bei HTTPMOD üblich ist als eigene Attribute für jeden Set.
Dokumentiert habe ich es aber noch nicht und über den Namen des Attributs bin ich auch noch nicht so glücklich. Evt. wäre set01DirectReading o.ä. deutlicher.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 20 Oktober 2020, 20:11:42
Zitat von: StefanStrobel am 20 Oktober 2020, 19:56:06
set01Temp o.ä. ist da mit drin. Im Prinzip müsstest Du damit das machen können, was Du möchtest, nur eben nicht in einer setList-Zeile, sondern so wie das bei HTTPMOD üblich ist als eigene Attribute für jeden Set.
Dokumentiert habe ich es aber noch nicht und über den Namen des Attributs bin ich auch noch nicht so glücklich. Evt. wäre set01DirectReading o.ä. deutlicher.
Dann müsste man aber den Wert jedes mal wieder neu setzen.

Ich denke das wird es so nicht lösen können, da man bei einem set z.B. das Jahr, den Monat und den Tag setzen können muss.
Wahrscheinlich muss ich dann doch auf die Dokumentation oder ein Muster warten, damit ich es verstehen kann.


Wie würde man so etwas in dieser Art umsetzen können???
get38Hint1 _MONTH select,1,1,12
get38Hint2 _YEAR select 2019,2020,2021,2022

%_YEAR% wird durch das reading _YEAR ersetzt
%_MONTH% wird durch das reading _MONTH ersetzt
get38URL https://%JUDO_ipaddress%:8124/?group=consumption&command=water%20monthly&msgnumber=1&token=%token%&year=%_YEAR%&month=%_MONTH%


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 21 Oktober 2020, 12:34:15
Mit der HTTPMOD Version
98_HTTPMOD.pm 22997 2020-10-20 17:31:50Z StefanStrobel
bekomme ich folgendes Warning nach einem FHEM Start:
2020.10.21 12:26:26 1: PERL WARNING: Use of uninitialized value $d in hash element at fhem.pl line 4590.
2020.10.21 12:26:26 1: stacktrace:
2020.10.21 12:26:26 1:     main::__ANON__                      called by fhem.pl (4590)
2020.10.21 12:26:26 1:     main::AttrVal                       called by ./FHEM/98_HTTPMOD.pm (2519)
2020.10.21 12:26:26 1:     HTTPMOD::ReadyForSending            called by ./FHEM/98_HTTPMOD.pm (2556)
2020.10.21 12:26:26 1:     HTTPMOD::HandleSendQueue            called by ./FHEM/98_HTTPMOD.pm (2143)
2020.10.21 12:26:26 1:     HTTPMOD::CheckRedirects             called by ./FHEM/98_HTTPMOD.pm (2314)
2020.10.21 12:26:26 1:     HTTPMOD::ReadCallback               called by FHEM/HttpUtils.pm (639)
2020.10.21 12:26:26 1:     main::__ANON__                      called by fhem.pl (760)

Sonst scheinen die HTTPMOD Devices zu laufen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 21 Oktober 2020, 12:49:40
Das Problem ist der Funktionsaufruf in HTTPMOD (2556)


    return if (!ReadyForSending());


ohne übergebenen Parameter an ReadyForSending().

In Zeile 2497 und 2498 passiert dann folgendes:


sub ReadyForSending {
    my $hash   = shift;
    my $name   = $hash->{NAME};


Wenn man aber die Funktion ohne Parameter aufruft, gibt es keinen Inhalt für $hash, den man mit shift zuweisen könnte.
Und wenn es in $hash nix gibt, dann gibt es logischerweise auch in $name danach keinen Wert.

Trotzdem wird in Zeile 2519 versucht, einen Attributwert zu ermitteln


    my $minSendDelay = AttrVal($hash->{NAME}, "minSendDelay", 0.2);


Man hat zwar daran gedacht, einen default Wert zu definieren. Aber wenn man AttrVal() ohne definierten (!) deviceName aufruft, kommt es zur Warnung in perl.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 Oktober 2020, 17:44:16
Danke für den Hinweis.
Ich habe gerade ein update eingecheckt.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 21 Oktober 2020, 19:13:14
Kann mir mal jemand helfen? Ich habe das Problem, dass ich in einer Webseite (Blackboard) einmal täglich eine bestimmte URL aufrufen muss:
https://lms.fu-berlin.de/lms-apps/management/index.php/webserviceVbrick?action=toolStart&courseId=XXXXXXXXXX&invoker=aaaaaaaaaaa
Das funktioniert aber nur, wenn ich mich vorher eingelogged habe,
POST /idp-fub/profile/SAML2/Redirect/SSO;jsessionid=315B76FD353E277B92A459BF8CAED0C0?execution=e1s1 HTTP/1.1
Host: identity.fu-berlin.de

j_username=**********&j_password=**********&_eventId_proceed=

Auf diese Seite komme ich "normalerweise" durch Aufruf einer Loginseite
GET / HTTP/1.1
Host: lms.fu-berlin.de


Mein Problem ist das jsessionid da oben. Zwischen dem ersten GET und dem POST liegen in Blurp etwa 50 weitere Seiten (!), ebenso nach dem Login-Versuch. Wie handhabt man so etwas in HTTPMOD?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 21 Oktober 2020, 19:54:06
Hallo andies,
ich hatte da letztens auch ein Problem und bin auf eine relativ creative Lösung gekommen.
Zitat
Mein Problem ist das jsessionid da oben. Zwischen dem ersten GET und dem POST liegen in Blurp etwa 50 weitere Seiten (!), ebenso nach dem Login-Versuch. Wie handhabt man so etwas in HTTPMOD?

Bei komplexeren Anmeldungen arbeite ich mit den userreadings und den dortigen Trigger Möglichkeiten.
Keys und Werte, die später benötigt werden speichere ich in readings "auth_*"

Hier sind mal die bereinigten, relevanten Attribute

attr BYD_Status DbLogExclude .*
attr BYD_Status enableControlSet 0
attr BYD_Status enableCookies 1
attr BYD_Status handleRedirects 1
attr BYD_Status httpVersion 1.1

attr BYD_Status authRetries 1
attr BYD_Status reAuthRegex Unauthorized
attr BYD_Status dontRequeueAfterAuth 1

attr BYD_Status reading01Name auth_qop
attr BYD_Status reading01Regex qop="(.*)", nonce
attr BYD_Status reading02Name auth_nonce
attr BYD_Status reading02Regex nonce="(.*)", opaque
attr BYD_Status reading03Name auth_opaque
attr BYD_Status reading03Regex opaque="(.*)",algorithm
attr BYD_Status reading04Name auth_realm
attr BYD_Status reading04Regex realm="(.*)", domain

attr BYD_Status replacement01Mode expression
attr BYD_Status replacement01Regex %IP-Address_BYD%
attr BYD_Status replacement01Value ReadingsVal("PV_Anlage_1_config","IP-Address_BYD","")
attr BYD_Status replacement03Mode reading
attr BYD_Status replacement03Regex %auth_realm%
attr BYD_Status replacement03Value auth_realm
attr BYD_Status replacement04Mode reading
attr BYD_Status replacement04Regex %auth_nonce%
attr BYD_Status replacement04Value auth_nonce
attr BYD_Status replacement05Mode reading
attr BYD_Status replacement05Regex %auth_response%
attr BYD_Status replacement05Value auth_response
attr BYD_Status replacement06Mode reading
attr BYD_Status replacement06Regex %auth_opaque%
attr BYD_Status replacement06Value auth_opaque
attr BYD_Status replacement07Mode reading
attr BYD_Status replacement07Regex %auth_nc%
attr BYD_Status replacement07Value auth_nc
attr BYD_Status replacement08Mode reading
attr BYD_Status replacement08Regex %auth_cnonce%
attr BYD_Status replacement08Value auth_cnonce

attr BYD_Status getHeader01 Authorization: Digest username="installer", realm="%auth_realm%", nonce="%auth_nonce%", uri="/asp/RunData.asp%", algorithm=MD5, response="%auth_response%", opaque="%auth_opaque%", qop="auth", nc=%auth_nc%, cnonce="%auth_cnonce%"

attr BYD_Status sid01URL http://%IP-Address_BYD%/asp/BatteryInformation.asp
attr BYD_Status sid01Header Authorization: Digest username="installer", realm="%auth_realm%", nonce="%auth_nonce%", uri="/asp/RunData.asp", algorithm=MD5, response="%auth_response%", opaque="%auth_opaque%", qop=auth, nc=%auth_nc%, cnonce="%auth_cnonce%"

attr BYD_Status sid01ParseResponse 1

attr BYD_Status userReadings auth_first_called:auth_nonce.* {my $first_called = InternalVal("$NAME","path","n.a");;;; $first_called =~ s/:/_/g;;;; $first_called =~ s/\/api\/v1//g;;;; $first_called},\
auth_HA1:auth_first_called.* {md5_hex("installer:".ReadingsVal($NAME,"auth_realm","").":<Passwort>")},\
auth_HA2:auth_HA1.* {md5_hex("GET:/asp/RunData.asp")},\
auth_response:auth_HA2.* {md5_hex(ReadingsVal($NAME,"auth_HA1","").":".ReadingsVal($NAME,"auth_nonce","").":".ReadingsVal($NAME,"auth_nc","").":".ReadingsVal($NAME,"auth_cnonce","").":".ReadingsVal($NAME,"auth_qop","").":".ReadingsVal($NAME,"auth_HA2",""))},\
auth_nc:auth_nonce.* {"00000001"},\
auth_cnonce:auth_response.* {"d789ea5b7e9a2377"},\
auth_Step1_Message:auth_nonce.* {"HTTP nonce updated"}

attr BYD_Status showBody 1
attr BYD_Status showError 1
attr BYD_Status verbose 5


Ob das so eine gute Idee ist, oder ob es dafür eine elegantere Lösung gibt wurde mir hier bisher noch nicht bestätigt, aber es funktioniert :-)

Viele Grüße
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 Oktober 2020, 16:50:33
Hallo,

Trigger sollten eigentlich nicht nötig sein.
Man kann mehrere Schritte einfach über sid01, sid02, sid03 etc. abbilden. Wenn es nicht mehrere Variable/SessionIDs/Tokens sind, die benötigt werden, dann reicht es auch mit idRegex und $sid zu arbeiten.
Bei mehreren IDs / Tokens muss man Replecements definieren. Aber auch das sollte ohne Trigger gehen. Einfach die Readings extrahieren und dann wieder im Replacement verwenden.
siehe https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_create_a_valid_session_id_that_might_be_necessary

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 22 Oktober 2020, 17:31:35
Zitat von: StefanStrobel am 22 Oktober 2020, 16:50:33
Man kann mehrere Schritte einfach über sid01, sid02, sid03 etc. abbilden. Wenn es nicht mehrere Variable/SessionIDs/Tokens sind, die benötigt werden, dann reicht es auch mit idRegex und $sid zu arbeiten.
Bei mehreren IDs / Tokens muss man Replecements definieren. Aber auch das sollte ohne Trigger gehen. Einfach die Readings extrahieren und dann wieder im Replacement verwenden.
siehe https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_create_a_valid_session_id_that_might_be_necessary
Damit hatte ich begonnen, jedoch waren dann die keys und token nie in der geforderten Reihenfolge.
Des weiteren musste ich zum richtigen Zeitpunkt auch noch md5 und nonce und all son Zeug generieren.

Ich wäre natürlich gerne bereit Hilfe anzunehmen und das ganze besser zu implementieren.
Vor einigen Wochen wollte da jedoch niemand so wirklich mit ran.

Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 23 Oktober 2020, 12:56:11
Hallo,

seit dem letzten Update:


Can't call method "Auth" on unblessed reference at ./FHEM/98_HTTPMOD.pm line 1328.


Elektrolurch

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 Oktober 2020, 17:05:27
Hallo,

ich habe gerade eine neue Version eingecheckt, die einen Tippfehler behebt (Auth statt DoAuth) sowie den Kontext bei Expressions auf das package main setzt.
Ich hoffe das behebt die neuen Fehler.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Harry47 am 23 Oktober 2020, 19:48:09
Hallo,

Seit dem letzten Update gibt es einen Fehler, wenn ich eine Sub in meiner "99_myUtils.pm" im Modul HTTPMOD aufrufen will.

Beispiel im HTTPMOD Modul
"reading01OExpr" entspricht "CorrectNumber($val,-1,1,1,0)"

"CorrectNumber" ist eine Funktion in meiner "99_myUtils.pm"

Fehlermeldung im Log (DDAX2 ist das HTTPMOD Modul):
DDax2: perl expression eval with expression my $timeDiff = $oRef->{'$timeDiff'};CorrectNumber($val,-1,1,1,0) on 12.628 created error: Undefined subroutine &FHEM::HTTPMOD::Utils::CorrectNumber called at (eval 3882) line 1.

Die von StefanStrobel vorgeschlagene Lösung war dann erfolgreich.
Angepasstes Beispiel im HTTPMOD Modul
"reading01OExpr" entspricht "main::CorrectNumber($val,-1,1,1,0)"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Elektrolurch am 24 Oktober 2020, 11:04:10
Leider nicht:

Undefined subroutine &HTTPMOD::Auth called at ./FHEM/98_HTTPMOD.pm line 1328.

...und dann starb fhem...

Elektrolurch

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 24 Oktober 2020, 11:19:01
Ändere in Zeile 1328 den Aufruf von Auth($hash) in DoAuth($hash).

Die Stelle wurde vermutlich einfach übersehen.

Zitat von: StefanStrobel am 23 Oktober 2020, 17:05:27
die einen Tippfehler behebt (Auth statt DoAuth) s
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 Oktober 2020, 14:05:15
so ist es.
Neue Version ist jetzt eingecheckt.

zu dem Problem mit Funktionen aus 99_myUtils.pm:
ich habe jetzt vor den Eval-String noch ein "package Main;" eingefügt. Damit sollte die Expression im Main-Kontext ablaufen und Funktionsaufrufe benötigen hoffentlich kein Main:: mehr.
@Harry: könntest Du kurz testen ob es wieder so wie vorher funktioniert?

Gruss / Thanks
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 25 Oktober 2020, 10:04:26
es scheint noch ein paar mehr Probleme mit nicht passenden Namensraumangaben zu geben, z.B. hier:

https://forum.fhem.de/index.php/topic,115250.0.html
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: jkriegl am 25 Oktober 2020, 13:23:16
Bekomme nach update (24.10.) Logeintragungen2020.10.25 13:10:05 3: Bajuw: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 116 (before "\x{fffd}C","sensorTy...") at lib/FHEM/HTTPMOD/Utils.pm line 640.
List DeviceInternals:
   BUSY       0
   DEF        https://api.opensensemap.org/boxes/5982d708e3b1fa001049ddb5/sensors 3600
   FUUID      5e9c38e8-f33f-9f96-b11d-8677b9e240645104
   Interval   3600
   MainURL    https://api.opensensemap.org/boxes/5982d708e3b1fa001049ddb5/sensors
   ModuleVersion 4.0.12 - 24.10.2020
   NAME       Bajuw
   NOTIFYDEV  global
   NR         60
   NTFY_ORDER 50-Bajuw
   STATE      13:10 19.7 °C 80 % 1018.0 hPa + PM: 0.70 0.40 µg/m³
   TYPE       HTTPMOD
   value     
   HttpUtils:
     NAME       
     addr       https://api.opensensemap.org:443
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl https://api.opensensemap.org/boxes/5982d708e3b1fa001049ddb5/sensors
     header     
     host       api.opensensemap.org
     httpheader HTTP/1.0 200 OK
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Origin: *
Access-Control-Expose-Headers: content-disposition
Access-Control-Max-Age: 600
Content-Encoding: gzip
Content-Md5: yWOVCFxQhzjs5KgCDB55Cw==
Content-Type: application/json; charset=utf-8
Date: Sun, 25 Oct 2020 12:10:05 GMT
Request-Id: 7342908c-0f11-40a9-86d5-ee391c1bb73f
Response-Time: 2
Vary: Accept-Encoding
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
X-Xss-Protection: 1; mode=block
Content-Length: 386
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /boxes/5982d708e3b1fa001049ddb5/sensors
     protocol   https
     redirects  0
     timeout    10
     url        https://api.opensensemap.org/boxes/5982d708e3b1fa001049ddb5/sensors
     sslargs:
   QUEUE:
   READINGS:
     2020-10-24 16:27:11   PM10            0.70
     2020-10-24 16:27:11   PM2.5           0.40
     2020-10-24 16:27:11   baro            1018.0
     2020-10-24 16:27:11   humidity        80
     2020-10-24 16:27:11   press-trend     +
     2020-10-25 13:10:05   stand           13:10
     2020-10-24 16:27:11   temperatur      19.7
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        0
     retryCount 0
     type       update
     url        https://api.opensensemap.org/boxes/5982d708e3b1fa001049ddb5/sensors
Attributes:
   event-on-change-reading .*
   group      Umwelt
   oldreadings baro
   reading01Format %.1f
   reading01JSON sensors_01_lastMeasurement_value
   reading01Name temperatur
   reading02Format %.1f
   reading02JSON sensors_02_lastMeasurement_value
   reading02Name baro
   reading02OExpr $val/94.1
   reading04Format %.0f
   reading04JSON sensors_04_lastMeasurement_value
   reading04Name humidity
   reading05JSON sensors_05_lastMeasurement_value
   reading05Name PM10
   reading06JSON sensors_06_lastMeasurement_value
   reading06Name PM2.5
   room       4.0 Wetter
   stateFormat stand temperatur °C humidity % baro hPa press-trend PM: PM10 PM2.5 µg/m³
   timeout    10
   userReadings stand {strftime "%R",localtime time;},

press-trend:baro:.* {my $val=ReadingsVal($name,"baro",0)
- OldReadingsVal($name,"baro",0);
$val > 0.2 ? "+" : $val < -0.2 ? "-" : "="},
   userattr   reading01Format reading01JSON reading01Name reading02Format reading02JSON reading02Name reading02OExpr reading04Format reading04JSON reading04Name reading05JSON reading05Name reading06JSON reading06Name

Der Verursacher scheint °C zu sein. Hat bis zum update funktioniert. (s. readings-timestamp) (Noch kein restore gemacht.)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Oktober 2020, 15:57:47
Hallo jkriegl,

das liegt vermutlich daran, dass in der neuen Version ein Bug bei bodyDecode behoben ist.
Bisher hat die Dekodierung nicht funktioniert. Nun schon, was aber offensichtlich auch Seiteneffekte hat.
Wenn man bodyDecode auf none setzt, sollte das alte Verhalten wieder da sein.
probier das doch bitte mal aus.
Wenn es nicht funktioniert würde die Konfiguration und der komplette JSON-String helfen, damit ich das Problem eingrenzen kann.

Gruss / vielen Dank
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Oktober 2020, 16:06:59
Ich habe gerade eine neue Version der Utils.pm eingecheckt, die den Fehler mit getUniqueId beheben sollte.
@betateilchen: Danke für den Hinweis.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: jkriegl am 25 Oktober 2020, 16:39:05
@Stefan mit bodyDecode = none funktioniert es wieder.

Habe in meiner Anfrage oben ein device-List mit Link um den JSON String zu bekommen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gehlbel am 26 Oktober 2020, 21:05:09
Die neue Version hat bei mir den getUniqueId Fehler behoben, Danke dafür.

Allerdings habe ich festgestellt das es 2 internals die ich bisher genutzt habe nicht mehr gibt:

- "addr" habe ich als replacement in GetxxURL/SetxxURL Attributen verwendet um auf den Hostenamen/Port zu refferenzieren ("MainURL" enthält die vollständige URL)
- "LASTSEND" habe ich verwendet um zu prüfen ob der letzte Aufruf fehlerfrei war (Timestamp LAST_ERROR > Timestamp LASTSEND)

Grüße
Béla
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Oktober 2020, 13:06:16
Hallo Bela,

Vielen Dank fürs Testen und das Feeback!
Ich habe versucht bei der Überarbeitung auch ein paar Altlasten auszumisten. Dazu gehört auch, dass ich ursprünglich beim Aufruf der HttpUtils einfach den HTTPMOD-Device-Hash verwendet habe und keinen eigenen Hash. Das habe ich jetzt geändert. Dadurch sind auch die ganzen Hash-Keys verschwunden, die HttpUtils gesetzt hat. Für den Fall, dass sie doch noch jemand sucht, habe ich den Übergabe-Hash für HttpUtils als $hash->{HttpUtils} referenziert.
Das bisherige $hash->{addr} ist daher jetzt immer noch als $hash->{HttpUtils}{addr} erreichbar, aber die Anzeige in Fhemweb ist nicht mehr voll mit Internals, die kaum jemand brauchen kann.
Ebenso habe ich Internals wie LASTSEND, von dem ich ausgegangen bin, dass es keiner braucht, in .LASTSEND umbenannt, so dass es nicht mehr angezeigt wird.
Wenn noch mehr Leute das benötigen, kann ich die Umbenennung auch rückgängig machen bzw. die Keys von HttpUtils wieder in den Device-Hash kopieren.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 27 Oktober 2020, 13:12:08
Zitat von: StefanStrobel am 27 Oktober 2020, 13:06:16
Ebenso habe ich Internals wie LASTSEND, von dem ich ausgegangen bin, dass es keiner braucht, in .LASTSEND umbenannt, so dass es nicht mehr angezeigt wird.
Wenn noch mehr Leute das benötigen, kann ich die Umbenennung auch rückgängig machen bzw. die Keys [...]
Alternativ: Man kann solche "versteckten" Hashes ggf. auch durch das Attribut "showInternalValues" in "global" sichtbar machen, wenn man die braucht. Kann aber sein, dass das auf der obersten Ebene bzw. in helper sein muss (da habe ich sowas in diversen von mir betreuten Modulen untergebracht).
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Rudibarani am 27 Oktober 2020, 17:30:25
Hallo Stefan,

ich nutzte HTTPMOD, um das Status-JSON meiner Lupus-Alarmanlage abzufragen. Da ist mir heute aufgefallen, dass ich seit dem 24.9. stets diesen Fehler im Logfile habe. An dem Tag habe ich ein Update laufen lassen.


2020.10.27 15:40:37 3: Alarmanlage_SmartHome: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 91 (before "\x{fffd}abgeschlosse...") at /opt/fhem/lib/FHEM/HTTPMOD/Utils.pm line 644.
2020.10.27 15:40:37 3: Alarmanlage_SmartHome: no parsed JSON structure available


Vorher lief es ohne Probleme. Ich weiß, dass mein JSON-File der Alarmanlage Tabulator-Symbole enthält, die nicht JSON-konform sind.
Diese lasse ich über preProcessRegex mit s/\t//g entfernen. Das lief auch immer gut.
Ich habe den regulären Ausdruck nach der Fehlermeldung auf s/([üÜäÄöÖ]|\t)/_/g erweitert, da das Wort vor der Fehlermeldung "Haustür" ist und ich auf das "ü" getippt habe. Das löst das Problem aber leider nicht.

Hast Du eine Idee, wo das Problem herkommen kann? Ist vielleicht bei einer der "Aufräumaktionen" eine Funktion in diesem Bereich weggefallen?

Danke für die Hilfe
Phillip
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 Oktober 2020, 11:09:07
Hallo,

hast Du mal  bodyDecode = none ausprobiert (siehe oben)

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Rudibarani am 28 Oktober 2020, 11:30:14
Zitat von: StefanStrobel am 28 Oktober 2020, 11:09:07
Hallo,

hast Du mal  bodyDecode = none ausprobiert (siehe oben)

Gruss
   Stefan

Perfekt - dann klappt alles wieder. Vielen Dank!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gehlbel am 28 Oktober 2020, 21:08:55
Zitat von: StefanStrobel am 27 Oktober 2020, 13:06:16
Ich habe versucht bei der Überarbeitung auch ein paar Altlasten auszumisten. Dazu gehört auch, dass ich ursprünglich beim Aufruf der HttpUtils einfach den HTTPMOD-Device-Hash verwendet habe und keinen eigenen Hash. Das habe ich jetzt geändert. Dadurch sind auch die ganzen Hash-Keys verschwunden, die HttpUtils gesetzt hat. Für den Fall, dass sie doch noch jemand sucht, habe ich den Übergabe-Hash für HttpUtils als $hash->{HttpUtils} referenziert.
Das bisherige $hash->{addr} ist daher jetzt immer noch als $hash->{HttpUtils}{addr} erreichbar, aber die Anzeige in Fhemweb ist nicht mehr voll mit Internals, die kaum jemand brauchen kann.
Ebenso habe ich Internals wie LASTSEND, von dem ich ausgegangen bin, dass es keiner braucht, in .LASTSEND umbenannt, so dass es nicht mehr angezeigt wird.
Wenn noch mehr Leute das benötigen, kann ich die Umbenennung auch rückgängig machen bzw. die Keys von HttpUtils wieder in den Device-Hash kopieren.

Hallo Stefan,

danke für Deine ausführliche Beschreibung und ich kann Deine Argumentation gut nachvollziehen.
Ich möchte auf der einen Seite nicht auf "alte" Keys setzten, die es dann evtl. irgendwann in der Form nicht gibt, deshalb habe ich mich heute daran versucht meine devices umzubauen, ist mir aber leider nicht gelungen ... hast Du evtl. eine Idee wie ich folgendes lösen kann:

- im Rahmen eines Replacements aus dem Internal MainURL nur die BaseURL "http(s)://Host:Port" ohne Pfad verwenden kann (z.B. https://x.y.z:nnn)
- wie ich erkennen kann ob der letzte Aufruf erfolgreich war, oder nicht und das Reading LAST_ERROR geschrieben wurde

Danke für Deine Untersützung.
Grüße
Béla
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 28 Oktober 2020, 21:16:07
Zitat von: gehlbel am 28 Oktober 2020, 21:08:55
- im Rahmen eines Replacements aus dem Internal MainURL nur die BaseURL "http(s)://Host:Port" ohne Pfad verwenden kann (z.B. https://x.y.z:nnn)

mit ^.*:\d+ regexen :)


sub test {
  my $url = "http(s)://Host:12345/hier/kommt/ein/Pfad";
  $url =~ /(^.*:\d+)/;
  return $1;
}
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Oktober 2020, 15:41:33
Zitat von: gehlbel am 28 Oktober 2020, 21:08:55
- wie ich erkennen kann ob der letzte Aufruf erfolgreich war, oder nicht und das Reading LAST_ERROR geschrieben wurde

eine Variante wäre deleteOnError:
Zitat
get|reading[0-9]*DeleteOnError
If set to 1 this attribute causes certain readings to be deleted when the website can not be reached and the HTTP request returns an error. Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be deleted if the same operation returns an error.

dann sind die spezifizierten Readings weg wenn der letzte Request nicht erfolgreich war.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gehlbel am 29 Oktober 2020, 19:32:36
Danke an Euch beide das hat mein Thema gelöst  :) und ich kann jetzt updaten.

Schöne Grüße
Béla
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Wolle02 am 05 November 2020, 11:46:52
Ich wollte aus einer alten FHEM Installation folgendes HTTMOD Device in meine neue FHEM Installation übernehmen:

defmod Pegelstand_Bodensee HTTPMOD https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?ids=aa9179c1-17ef-4c61-a48a-74193fa7bfdf&includeTimeseries=true&includeCharacteristicValues=true&includeCurrentMeasurement=true 0
attr Pegelstand_Bodensee userattr readingEncode
attr Pegelstand_Bodensee enableControlSet 1
attr Pegelstand_Bodensee extractAllJSON 1
attr Pegelstand_Bodensee readingEncode utf8


In der alten FHEM Installation mit HTTPMOD Modulversion 3.5.? hat diese Definition problemlos funktioniert.

In meiner aktuellen FHEM Installation habe ich die aktuelle HTTPMOD Modulversion 4.0.12.
Leider funktioniert damit die o.g. Definition nicht mehr. Ich habe auch schon versucht das ganze neu anzulegen; leider ebenfalls ohne Erfolg.

Ein Reread des Devices mit Verbose 5 bringt mir im Logfile folgenden Output:

2020.11.05 11:12:38 5: Pegelstand_Bodensee: set called with reread
2020.11.05 11:12:38 4: Pegelstand_Bodensee: GetUpdate called (reread)
2020.11.05 11:12:38 5: Pegelstand_Bodensee: AddToQueue adds type update to URL https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?ids=aa9179c1-17ef-4c61-a48a-74193fa7bfdf&includeTimeseries=true&includeCharacteristicValues=true&includeCurrentMeasurement=true, no data, no headers, retry 0, initial queue len: 0
2020.11.05 11:12:38 5: Pegelstand_Bodensee: HandleSendQueue called from HTTPMOD::AddToSendQueue, qlen = 1
2020.11.05 11:12:38 4: Pegelstand_Bodensee: HandleSendQueue sends update with timeout 2 to https://www.pegelonline.wsv.de/webservices/rest-api/v2/stations.json?ids=aa9179c1-17ef-4c61-a48a-74193fa7bfdf&includeTimeseries=true&includeCharacteristicValues=true&includeCurrentMeasurement=true, No Data, No Header
2020.11.05 11:12:39 5: Pegelstand_Bodensee: ReadCallback called from __ANON__
2020.11.05 11:12:39 4: Pegelstand_Bodensee: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Date: Thu, 05 Nov 2020 10:12:39 GMT
Server: Apache
ETag: "cfaf9b111de457257d6f78d66ecbcd5381e8531f6467060bf0d1332602b0bfbe-gzip"
Cache-Control: max-age=0, private, no-cache, no-store, must-revalidate, proxy-revalidate, no-transform
Expires: Thu, 05 Nov 2020 10:13:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Content-Security-Policy: script-src 'self' https://pegelonline.wsv.de https://maps.googleapis.com 'unsafe-inline' 'unsafe-eval'
Referrer-Policy: origin-when-cross-origin
Strict-Transport-Security: max-age=31536000; includeSubDomains
Access-Control-Allow-Origin: *
Content-Length: 564
Connection: close
Content-Type: application/json;charset=UTF-8, body length 1408
2020.11.05 11:12:39 5: Pegelstand_Bodensee: Read callback: body
[
  {
    "uuid": "aa9179c1-17ef-4c61-a48a-74193fa7bfdf",
    "number": "906",
    "shortname": "KONSTANZ",
    "longname": "KONSTANZ",
    "km": 0.0,
    "agency": "REGIERUNGSPRÄSIDIUM FREIBURG",
    "longitude": 9.172833233102148,
    "latitude": 47.66789422885012,
    "water": {
      "shortname": "BODENSEE",
      "longname": "BODENSEE"
    },
    "timeseries": [
      {
        "shortname": "W",
        "longname": "WASSERSTAND ROHDATEN",
        "unit": "cm",
        "equidistance": 15,
        "currentMeasurement": {
          "timestamp": "2020-11-05T10:30:00+01:00",
          "value": 368.0,
          "trend": 1,
          "stateMnwMhw": "normal",
          "stateNswHsw": "unknown"
        },
        "gaugeZero": {
          "unit": "m. ü. NHN",
          "value": 391.89,
          "validFrom": "2004-04-14"
        },
        "characteristicValues": [
          {
            "shortname": "MW",
            "longname": "Mittel der Tageswasserstände ",
            "unit": "cm",
            "value": 341.0,
            "timespanStart": "2006-11-01",
            "timespanEnd": "2015-10-31"
          },
          {
            "shortname": "MNW",
            "longname": "Mittel der Niedrigwasserstände ",
            "unit": "cm",
            "value": 262.0,
            "timespanStart": "2006-11-01",
            "timespanEnd": "2015-10-31"
          }
        ]
      }
    ]
  }
]
2020.11.05 11:12:39 4: Pegelstand_Bodensee: BodyDecode found charset header and set decoding to UTF-8 (bodyDecode was set to auto)
2020.11.05 11:12:39 4: Pegelstand_Bodensee: BodyDecode is decoding the response body as UTF-8
2020.11.05 11:12:39 3: Pegelstand_Bodensee: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 178 (before "\x{fffd}IDIUM FREIBU...") at lib/FHEM/HTTPMOD/Utils.pm line 644.

2020.11.05 11:12:39 5: Pegelstand_Bodensee: GetCookies is looking for Cookies
2020.11.05 11:12:39 5: Pegelstand_Bodensee: ExtractSid called, context reading, num 0
2020.11.05 11:12:39 4: Pegelstand_Bodensee: checking for redirects, code=200, ignore=0
2020.11.05 11:12:39 4: Pegelstand_Bodensee: no redirects to handle
2020.11.05 11:12:39 5: Pegelstand_Bodensee: Read callback sets LAST_REQUEST to update
2020.11.05 11:12:39 5: Pegelstand_Bodensee: CheckAuth decided no authentication required
2020.11.05 11:12:39 3: Pegelstand_Bodensee: no parsed JSON structure available
2020.11.05 11:12:39 5: Pegelstand_Bodensee: Read starts parsing response to update with defined readings:
2020.11.05 11:12:39 4: Pegelstand_Bodensee: Read response to update didn't match any Reading
2020.11.05 11:12:39 5: Pegelstand_Bodensee: HandleSendQueue called from HTTPMOD::ReadCallback, qlen = 0
2020.11.05 11:12:39 5: Pegelstand_Bodensee: HandleSendQueue found no usable entry in queue


Kann mir jemand helfen was ich in der neuen Modulversion in der Definition ändern muss?
Da die gesamte Doku auf Englisch ist tue ich mich hiermit zugegebener Maßen etwas schwer.  :-[
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 05 November 2020, 12:49:15
eventuell dein "doppeltes" de/encoding.

1. automatisches body decoding wegen header eintrag.
2. attr readingEncode

ich würde mal versuchen:
entweder:
1. attr readingEncode löschen
oder:
2. "attr bodyDecode none" ergänzen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Wolle02 am 05 November 2020, 13:01:34
Super. Das war es.

2. "attr bodyDecode none" ergänzen.

Damit scheint es wieder zu laufen.

Die erste Alternative hat nicht funktioniert.

Vielen herzlichen Dank.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 November 2020, 13:24:34
Hallo zusammen,
ich habe hier "HTTPMOD komplexes Anmeldeverfahren Python Keygenerator" (https://forum.fhem.de/index.php/topic,115530.0.html) mal ein komplexeres Problem ausgelagert.
Über Hilfe würde ich mich sehr freuen.
Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 November 2020, 16:29:23
Hallo,

ich habe das Gefühl, dass der Default "auto" für bodyDecode mehr Probleme macht als dass er nützt.
Eventuell sollte ich den Default wieder zurückändern, so dass ohne Angabe von bodyDecode auch nichts dekodiert wird.
Oder dass zumindest bei utf-8 kein decode gemacht wird, wenn nichts anderes konfiguriert ist.

Was meint Ihr?

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: plin am 10 November 2020, 15:56:15
Im Zuge der Realisierung der PV-Überwachung gab es Probleme bei der Ausführung von perl-Code der in "{}" eingebettet war. Im FHEM-Log tauchte hinter dem Code ein ominöses "/gee" auf. Eine Suche ergab dann

98_HTTPMOD.pm:            $match = eval {$string =~ s/$regex/$value/gee};
98_HTTPMOD.pm:                Log3 $name, 3, "$name: Replace: invalid regex / expression: /$regex/$value/gee - $@";

das dies wohl vom HTTPMOD stammt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 November 2020, 16:08:53
Zitat von: plin am 10 November 2020, 15:56:15
Im Zuge der Realisierung der PV-Überwachung gab es Probleme bei der Ausführung von perl-Code der in "{}" eingebettet war. Im FHEM-Log tauchte hinter dem Code ein ominöses "/gee" auf. Eine Suche ergab dann

98_HTTPMOD.pm:            $match = eval {$string =~ s/$regex/$value/gee};
98_HTTPMOD.pm:                Log3 $name, 3, "$name: Replace: invalid regex / expression: /$regex/$value/gee - $@";

das dies wohl vom HTTPMOD stammt.

Ich ergänze dann noch den Perl Code

replacement04Value {my $NAME = "PV_Anlage_1_API" ;;fhem("deletereading ".$NAME." message");;fhem("deletereading ".$NAME." auth.*");;my @chars=('a'..'z','A'..'Z','0'..'9'); my $r; foreach(1..16) {$r.=$chars[rand @chars];};; fhem("setreading ".$NAME." auth_randomString64 ".$r);; $r;;}


In dieser Version  von HTTPMOD lief es noch

FVERSION 98_HTTPMOD.pm:0.228400/2020-09-24
ModuleVersion 3.5.22 - 7.2.2020


Viele Grüße
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 November 2020, 17:44:29
Hallo Christian,

vielen Dank für die Ergänzung. Jetzt erahne ich zumindest worum es geht :-)
Könntet Ihr noch den Rest der relevanten Konfiguration sowie ein Log mit Verbose 5 posten?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 10 November 2020, 18:06:34
Zitat von: StefanStrobel am 10 November 2020, 17:44:29
vielen Dank für die Ergänzung. Jetzt erahne ich zumindest worum es geht :-)
Könntet Ihr noch den Rest der relevanten Konfiguration sowie ein Log mit Verbose 5 posten?

In Zeile 47 , damit Du nicht zuviel suchen musst :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 November 2020, 21:25:12
Hallo Christian und plin,

probiert doch mal die angehängte Version aus.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: plin am 10 November 2020, 21:37:23
Hallo Stefan,

im Log kommt immer noch "/gee" vor, das Reading "auth_randomString64" wird aber diesmal gesetzt.

VG Peter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 November 2020, 19:46:05
Hallo Peter,

Du verwendest ein Replacement mit Expression und in der Expresion rufst Du Fhem-Funktionen auf.
Die Ersetzung mit der Expression wird in HTTPMOD über ein s/Regex/Expression/gee durchgeführt.

Das erste Problem mit der neuen Version von HTTPMOD lag darin, dass HTTPMOD inzwischen einen eigenen Namespace verwendet.
Fhem-Funktionen müssen dann explizit importiert werden oder aber explizit als main::Funktionsname aufgerufen werden.
Die Funktion fhem(), die in Deiner Expression verwendet wurde, hatte ich bisher nicht importiert. Das habe ich in der letzten geposteten Version ergänzt und damit ist die erste Warnung weg.

Damit eventuelle Perl-Warnings dabei sauber im Log erscheinen, verbiegt HTTPMOD den Warning-Handler:

            local $SIG{__WARN__} = sub { Log3 $name, 3, "$name: Replacement $rNum with expression $value and regex $regex created warning: @_"; };
            $match = eval { $string =~ s/$regex/$value/gee };


Das bedeutet aber auch, dass Warnings, die in Deinen Aufrufen von Fhem-Funktionen erzeugt werden auch so im Protokoll stehen, als ob sie während s/Regex/Expresion/gee entstehen. Das ist in diesem Fall aber gar nicht korrekt.

Das Problem ist eher hier:

Zitat
2020.11.10 21:29:50 1: PERL WARNING: Argument "" isn't numeric in division (/) at (eval 19872) line 10.
2020.11.10 21:29:50 3: eval:
my $calcVal=0;
my $pvt   = sprintf("%04d W",ReadingsVal("PV_Anlage_1","Total_AC_active_power","") );
my $pvtd  = sprintf("%05.2f kWh",ReadingsVal("$name","Statistic_Yield_Day", "")/1000 );
my $pvtm  = sprintf("%06.2f kWh",ReadingsVal("$name","Statistic_Yield_Month", "")/1000 );
my $pvty  = sprintf("%08.2f kWh",ReadingsVal("$name","Statistic_Yield_Year", "")/1000 );

Vermutlich sind das Userreadings, die die Warnung erzeugen, weil ein Reading noch leer ist.

Generell würde ich aber mal hinterfragen, ob das mit den fhem()-Aufrufen in Replacement-Expressions der richtige Weg ist.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: plin am 11 November 2020, 19:51:17
Hallo Stefan,

danke fürs Feedback. Aktuell bin ich dabei Christians python/HTTPMOD-Lösung auf perl umzustricken. Einige Grundsatzprobleme sind gelöst, die halbe Wegstrecke habe ich hinter mir. Dann kann das Verfahren durch eine perl-Funktion ersetzt werden.

Viele Grüße
Peter

P.S. Kennst Du Dich mit REST und Digest::SHA und hmac aus???
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 November 2020, 20:32:00
Zitat von: StefanStrobel am 11 November 2020, 19:46:05
Du verwendest ein Replacement mit Expression und in der Expresion rufst Du Fhem-Funktionen auf.
Die Ersetzung mit der Expression wird in HTTPMOD über ein s/Regex/Expression/gee durchgeführt.

Zitat
Das erste Problem mit der neuen Version von HTTPMOD lag darin, dass HTTPMOD inzwischen einen eigenen Namespace verwendet.
Fhem-Funktionen müssen dann explizit importiert werden oder aber explizit als main::Funktionsname aufgerufen werden.
Die Funktion fhem(), die in Deiner Expression verwendet wurde, hatte ich bisher nicht importiert. Das habe ich in der letzten geposteten Version ergänzt und damit ist die erste Warnung weg.
Dieses Problem ist zuerst bei Peter aufgetreten, da er während der Installation meiner Kostal Plenticore Anbindung noch einen Fhem Update gemacht hatte.
Ich arbeite noch mit einer vorherigen HTTPMOD Version und hatte die Fehlermeldungen noch mitverfolgt.

Zitat
Damit eventuelle Perl-Warnings dabei sauber im Log erscheinen, verbiegt HTTPMOD den Warning-Handler:

            local $SIG{__WARN__} = sub { Log3 $name, 3, "$name: Replacement $rNum with expression $value and regex $regex created warning: @_"; };
            $match = eval { $string =~ s/$regex/$value/gee };


Das bedeutet aber auch, dass Warnings, die in Deinen Aufrufen von Fhem-Funktionen erzeugt werden auch so im Protokoll stehen, als ob sie während s/Regex/Expresion/gee entstehen. Das ist in diesem Fall aber gar nicht korrekt.


Zitat
Das Problem ist eher hier:
Vermutlich sind das Userreadings, die die Warnung erzeugen, weil ein Reading noch leer ist.
Bei den readings hatte ich leider zuerst nur den default "" anstatt 0 eingetragen. Peter hat noch eine ältere Version. Ich kam mit den Korrekturen nicht so schnell nach.


Zitat
Generell würde ich aber mal hinterfragen, ob das mit den fhem()-Aufrufen in Replacement-Expressions der richtige Weg ist.

Hallo Stefan,

die Quelle des Übels bin ich :-)

Ich hatte hier und an anderer Stelle bereits die Problematik mit der Anmeldung geäußert, da HTTPMOD wohl nicht ein solch komplexes Verfahren unterstützt.
Somit musste ich mit den vorhandenen Mechanismen verschiedenste Funktionalitäten einbinden.

Peter arbeitet gerade an der Migration der Python Skripte zu Perl, womit das größte Übel beseitigt wird.

Gibt es eine Möglichkeit mit sid* eine Anmeldung mit Key Generierung zu implementieren?

Hier sind bereits einig Logs von der Anmeldung zu finden https://forum.fhem.de/index.php/topic,115530.0.html (https://forum.fhem.de/index.php/topic,115530.0.html)

Ich schlage vor, dass Peter erstmal die Migration fortsetzt und ich die Perl Funktionen dann teste.
Danach würde ich dann das generelle Verfahren der Anmeldung mit einem Log und einer Beschreibung zur Diskussion stellen.

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 12 November 2020, 15:58:17
Hallo Stefan,

Zitat
das erste Skript ist nun erfolgreich migriert und in das HTTPMOD Device eingebaut. Auch wenn der Weg über die userreadings noch strittig ist.

Nun müssen die erzeugten Keys aus der Funktion wieder in das HTTPMOD zurück, was bei einem Wert kein Problem ist, jedoch wird das zweite Skript drei Werte generieren.
Bisher habe ich diese aus Python raus als setreading gesetzt, jedoch ist dies innerhalb des userreadings ja nicht gestattet.
Gibt es einen Weg, das aus dem Perl Skript anderweitig im HTTPMOD zu setzen?


Ich ziehe diesen Frageblock zurück, da ich die letzte Nacht einiges dazu gelernt habe ;-) und die Anmeldung nun ohne Trigger im userreading und andere Unschönheiten läuft.
Falls nun noch andere Fragen entstehen melde ich mich einfach nochmal.

Viele Grüße
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 November 2020, 17:55:59
Hallo zusammen,

gibt es beim HTTPMOD auch die Möglichkeit ein Device als Modul zu speichernt?

Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Beta-User am 14 November 2020, 19:03:32
Zitat von: ch.eick am 14 November 2020, 17:55:59
Hallo zusammen,

gibt es beim HTTPMOD auch die Möglichkeit ein Device als Modul zu speichernt?

Gruß
    Christian
Wie meinst du das?

attrTemplate geht, darüber könnte man auch Zusatzcode (z.B. aus contrib) nachladen oder Usereingaben auswerten (Zugangsdaten?)...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 14 November 2020, 20:04:15
Zitat von: Beta-User am 14 November 2020, 19:03:32
attrTemplate geht, darüber könnte man auch Zusatzcode (z.B. aus contrib) nachladen oder Usereingaben auswerten (Zugangsdaten?)...
Beim Modbus kann man saveAsModule machen und bekommt das Skelett für ein lauffähiges Modul.
Danach kann man dann den Code noch optimieren und auch erweitern.
Für den Enduser verschwindet dadurch die Grundlegende Definition mit den meisten Attributen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 November 2020, 10:33:57
Hallo zusammen,
das Problem in der aktuellen HTTPMOD Version mit dem "/gee)" beim replacement, scheint noch zu bestehen.
Hier ist der passende Post mit den Logmeldungen und einer Deutung durch mich https://forum.fhem.de/index.php/topic,114849.msg1101259.html#msg1101259 (https://forum.fhem.de/index.php/topic,114849.msg1101259.html#msg1101259)
Meine noch ältere HTTPMOD Version, bei der es noch funktioniert ist dort auch aufgelistet.

plin und ich haben nun beide die Gegenprobe gemacht. Altes Modul läuft, neues geht nicht.

Viele Grüße
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 November 2020, 14:18:56
Hallo Christian,

der größte Unterschied zwischen der alten Version und der neuen Version von HTTPMOD ist der Namespace.
HTTPMOD läuft jetzt in einem eigenen Namespace:

package HTTPMOD;


Das hat zur Folge, dass alle Funktionen, die aus dem main:: Kontext aufgerufen werden sollen, entweder importiert werden müssen oder eben mit main:: aufgerufen werden müssen.

Das ist auch genau das Problem wenn man in einer Expression eine Funktion wie fhem(), ReadingVal() etc. aufruft.
Ich habe versucht alle Funktionen, die ich hier für relevant erachtet habe, in HTTPMOD zu importieren.
Wenn Ihr aber eigenen Funktionen definiert und verwendet, dann sind die natürlich nicht importiert.
Statt plenticore_auth("start","user","$NAME") müsste es main::plenticore_auth("start","user","$NAME") lauten.
Da ich inzwischen davon ausgehe, dass ich das nicht allen Anwendern vermitteln kann, habe ich in der angehängten neuen Version vor die Expression ein "package main;" gepackt. Dann laufen auch die Expressions in Replacements im main-Kontext.
Schau doch mal ob das bei Euch funktioniert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: plin am 15 November 2020, 14:34:38
Zitat von: StefanStrobel am 15 November 2020, 14:18:56
Schau doch mal ob das bei Euch funktioniert.
Hallo Stefan,

bei mir läuft's.

VG Peter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 November 2020, 14:45:06
Okay, Ihr habt mich abgehängt :-)
Wo kommt das "package HTTPMOD;" dann hin?
Oder soll ich nur das HTTPMOD ersetzen?


Okay, bei mir läuft es jetzt auch. Habe ich denn jetzt generell etwas fasch in der Verwendung mit dem HTTPMOD gemacht?
Wenn es besser wäre kann ich auch gerne das main:: vor den Aufruf der Funktionen schreiben.

Dafür bin ich einfach kein Entwickler.
     Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 November 2020, 15:23:27
Hallo Christian,

Wenn die Probleme mit der neuen Version behoben sind ist ja alles gut.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 November 2020, 15:56:59
Zitat von: StefanStrobel am 15 November 2020, 15:23:27
Wenn die Probleme mit der neuen Version behoben sind ist ja alles gut.
Ja, vielen Dank für die unermüdliche Unterstützung.
Auch das "/gee)" Problem ist jetzt weg.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 18 November 2020, 18:15:16
Hallo zusammen,

ich habe bei einem Device

attr BYD_Status get04DeleteIfUnmatched 1

gesetzt, weil dort readings aufbereitet werden, aber dann nichts enthalten.
Mit der Version 98_HTTPMOD_3.5.22.pm hat das auch noch funktioniert.
Bei Version 98_HTTPMOD_4.0.15.pm  klappt das wohl nicht mehr.


BatteryInformation-7 2020-11-18 23:24:00   <<<< die readings waren bisher immer weg
BatteryInformation-8 2020-11-18 23:24:00   <<<<
BatteryInformation_Alarm_state Normal! 2020-11-18 23:24:00
BatteryInformation_Current -0.026 2020-11-18 23:24:00
BatteryInformation_Date_and_Time 2020-11-19 00:22:52 2020-11-18 23:24:00
BatteryInformation_MaxCellTemp 16.000 2020-11-18 23:24:00
BatteryInformation_MaxCellVol 3.220 2020-11-18 23:24:00


Bitte wundert Euch nicht über die Regex, das ist eine total grottige Http Seite :-(

2020.11.18 23:36:00.124 5: BYD_Status: ExtractReading BatteryInformation with regex (?^:value=([+|-]{0,1}\d+.\d+)[%]{0,1}>|value=([A-Z]+)>|value="(\d{4}-\d+-\d+ \d+:\d+:\d+)"|Alarm state:<\/h3><\/td>\n<td>.*">(\w+\W)<\/font>) and options g ...

snip...

2020.11.18 23:35:03.141 5: BYD_Status: ExtractReading for get04-41 sets BatteryInformation-41 to
2020.11.18 23:35:03.142 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.143 5: BYD_Status: ExtractReading for get04-42 sets BatteryInformation_System_state to RUN
2020.11.18 23:35:03.144 5: BYD_Status: ExtractReading value as hex is 52554e
2020.11.18 23:35:03.145 5: BYD_Status: ExtractReading for get04-43 sets BatteryInformation-43 to
2020.11.18 23:35:03.145 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.146 5: BYD_Status: ExtractReading for get04-44 sets BatteryInformation-44 to
2020.11.18 23:35:03.146 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.147 5: BYD_Status: ExtractReading for get04-45 sets BatteryInformation-45 to
2020.11.18 23:35:03.147 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.148 5: BYD_Status: ExtractReading for get04-46 sets BatteryInformation-46 to
2020.11.18 23:35:03.148 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading for get04-47 sets BatteryInformation_Date_and_Time to 2020-11-19 00:33:54
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading value as hex is 323032302d31312d31392030303a33333a3534
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading for get04-48 sets BatteryInformation-48 to
2020.11.18 23:35:03.150 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading for get04-49 sets BatteryInformation-49 to
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.151 5: BYD_Status: ExtractReading for get04-50 sets BatteryInformation-50 to
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading for get04-51 sets BatteryInformation-51 to
2020.11.18 23:35:03.152 5: BYD_Status: ExtractReading value as hex is
2020.11.18 23:35:03.153 5: BYD_Status: ExtractReading for get04-52 sets BatteryInformation_Alarm_state to Normal!
2020.11.18 23:35:03.153 5: BYD_Status: ExtractReading value as hex is 4e6f726d616c21
2020.11.18 23:35:03.153 4: BYD_Status: Read response matched 52, unmatch 0 Reading(s)
2020.11.18 23:35:03.153 5: BYD_Status: Read response to get04 matched BatteryInformation_TotalVoltage BatteryInformation-2 BatteryInformation-3 BatteryInformation-4 BatteryInformation_PackVoltage BatteryInformation-6 BatteryInformation-7 BatteryInformation-8 BatteryInformation_Current BatteryInformation-10 BatteryInformation-11 BatteryInformation-12 BatteryInformation_SOC BatteryInformation-14 BatteryInformation-15 BatteryInformation-16 BatteryInformation_SysTemp BatteryInformation-18 BatteryInformation-19 BatteryInformation-20 BatteryInformation_MaxCellVol BatteryInformation-22 BatteryInformation-23 BatteryInformation-24 BatteryInformation_MinCellVol BatteryInformation-26 BatteryInformation-27 BatteryInformation-28 BatteryInformation_MaxCellTemp BatteryInformation-30 BatteryInformation-31 BatteryInformation-32 BatteryInformation_MinCellTemp BatteryInformation-34 BatteryInformation-35 BatteryInformation-36 BatteryInformation_Power BatteryInformation-38 BatteryInformation-39 BatteryInformation-40 BatteryInformation-41 BatteryInformation_System_state BatteryInformation-43 BatteryInformation-44 BatteryInformation-45 BatteryInformation-46 BatteryInformation_Date_and_Time BatteryInformation-48 BatteryInformation-49 BatteryInformation-50 BatteryInformation-51 BatteryInformation_Alarm_state
2020.11.18 23:35:03.244 5: BYD_Status: DoDeleteIfUnmatched called with request get04
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: List from requestReadings is BatteryInformation-10 BatteryInformation-11 BatteryInformation-12 BatteryInformation-14 BatteryInformation-15 BatteryInformation-16 BatteryInformation-18 BatteryInformation-19 BatteryInformation-2 BatteryInformation-20 BatteryInformation-22 BatteryInformation-23 BatteryInformation-24 BatteryInformation-26 BatteryInformation-27 BatteryInformation-28 BatteryInformation-3 BatteryInformation-30 BatteryInformation-31 BatteryInformation-32 BatteryInformation-34 BatteryInformation-35 BatteryInformation-36 BatteryInformation-38 BatteryInformation-39 BatteryInformation-4 BatteryInformation-40 BatteryInformation-41 BatteryInformation-43 BatteryInformation-44 BatteryInformation-45 BatteryInformation-46 BatteryInformation-48 BatteryInformation-49 BatteryInformation-50 BatteryInformation-51 BatteryInformation-6 BatteryInformation-7 BatteryInformation-8 BatteryInformation_Alarm_state BatteryInformation_Current BatteryInformation_Date_and_Time BatteryInformation_MaxCellTemp BatteryInformation_MaxCellVol BatteryInformation_MinCellTemp BatteryInformation_MinCellVol BatteryInformation_PackVoltage BatteryInformation_Power BatteryInformation_SOC BatteryInformation_SysTemp BatteryInformation_System_state BatteryInformation_TotalVoltage
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-10 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-11 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-12 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-14 (matched)
2020.11.18 23:35:03.245 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-15 (matched)
2020.11.18 23:35:03.246 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-16 (matched)
2020.11.18 23:35:03.246 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-18 (matched)


Gruß
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 19 November 2020, 10:16:52
Mit der Version
98_HTTPMOD.pm 23017 2020-10-24 12:02:29Z StefanStrobel
fehlt mir das Internal displayurl. Gibt es dafür einen Grund?
Ich nutze dies um den generierten Link beim Heizöl-Preis-Check (https://forum.fhem.de/index.php/topic,107189.msg1055334.html#msg1055334) als Verweis zu nutzen.



EDIT: Das Internal TRIGGERTIME_FMT für den Zeitpunkt der nächsten Ausführung fehlt mir auch.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 November 2020, 17:34:14
Hallo yersinia,

das hatte ich vor ein paar Wochen ausführlicher beschrieben (siehe #957).
Zitat
Für den Fall, dass sie doch noch jemand sucht, habe ich den Übergabe-Hash für HttpUtils als $hash->{HttpUtils} referenziert.
Das bisherige $hash->{addr} ist daher jetzt immer noch als $hash->{HttpUtils}{addr} erreichbar
TRIGGERTIME gehört da jedoch nicht dazu. Das ist jetzt versteckt als .TRIGGERTIME. Das redundante TRIGGERTIME_FMT ist weggefallen.
Du kannst es aber einfach mit FmtDateTime() aus $hash->{'.TRIGGERTIME'} berechnen.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 November 2020, 17:35:10
Hallo Christian,

danke für den Hinweis, das schaue ich mir genauer an.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 03 Dezember 2020, 12:34:49
Zitat von: StefanStrobel am 19 November 2020, 17:34:14
Hallo yersinia,

das hatte ich vor ein paar Wochen ausführlicher beschrieben (siehe #957).TRIGGERTIME gehört da jedoch nicht dazu. Das ist jetzt versteckt als .TRIGGERTIME. Das redundante TRIGGERTIME_FMT ist weggefallen.
Du kannst es aber einfach mit FmtDateTime() aus $hash->{'.TRIGGERTIME'} berechnen.
Sorry, ich habe die Antwort erst die Tage gelesen - das es wegfällt ist mir entgangen (zugegebenermaßen verfolge ich den Thread auch nicht sehr aufmerksam). Dank der Unterstützung von betateilchen konnte ich auch FmtDateTime() nutzen. Thx.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: siggel am 03 Dezember 2020, 22:51:58
Laut Update-Check habe ich den aktuellen Stand, daher melde ich das mal als wohl noch nicht adressierten Bug:

Kann es sein, dass die URL nicht mehr so lang sein kann wie vorher?

Aktuell geht meine sonst über Monate funktionierende Fahrzeitabfrage nicht mehr. Es erfolgt kein Update der Readings, insbesondere auch kein status REQUEST_DENIED o.ä.:

define tryme HTTPMOD https://maps.googleapis.com/maps/api/distancematrix/json?origins=Ortxxxx,Strxxxxxxxxx+1&destinations=Ortyyyy,Stryyyyyy+yyyyyyyyyyyyyy+11&mode=driving&language=de-DE&departure_time=now&key=APIKEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 0

Kürze ich das wie folgt ein, funktioniert es tadellos, ist aber natürlich vom Ergebnis her unbrauchbar bei einem Zielort in Hamburg  ;)

https://maps.googleapis.com/maps/api/distancematrix/json?origins=Ortxxxx&destinations=Ortyyyy&mode=driving&language=de-DE&departure_time=now&key=APIKEYxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Sieht für mich so aus, dass da irgendwo eine String-Verarbeitung im Unterschied zu vorher nicht mehr genug Zeichen aufnimmt, daher habe ich im Beispiel mal anonymisierte Orte + API-Key in realer Länge dargestellt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 Dezember 2020, 11:08:35
Zitat von: StefanStrobel am 19 November 2020, 17:35:10
Hallo Christian,

danke für den Hinweis, das schaue ich mir genauer an.
Moin, gibt es hier schon was neues? Ich habe meinen Update bisher gestoppt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Dezember 2020, 17:33:57
Hallo Christian,

bräuchte noch etwas mehr Daten um das Problem nachvollziehen zu können.
Ideal wäre ein Dump der HTML-Seite, in der die Readings gesetzt werden und einen bei der die Readings gelöscht werden sollten, sowie Deine Konfiguration. Dann könnte ich das bei mir mit einer file://-Url nachstellen.

Gruss / Thanx
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Dezember 2020, 17:38:27
Hallo siggel,

bitte setze das Device doch mal auf verbose 5 und poste einen Auszug aus dem Log sowie Deine komplette Konfiguration des Devices. Dann sollte man einfach erkennen können, wo das Problem liegt. In Deinem ersten Beispiel ist das Device ja mit Intervall 0 definiert. Wie startest Du in diesem Fall die Abfrage?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 Dezember 2020, 18:28:32
Zitat von: StefanStrobel am 04 Dezember 2020, 17:33:57
bräuchte noch etwas mehr Daten um das Problem nachvollziehen zu können.
Ideal wäre ein Dump der HTML-Seite, in der die Readings gesetzt werden und einen bei der die Readings gelöscht werden sollten, sowie Deine Konfiguration. Dann könnte ich das bei mir mit einer file://-Url nachstellen.
Ich habe mal etwas zusammengestellt und angehängt.
verbose 5
showbody 1
list device
raw device

Momentan war ich noch am userreading und stateFormat, die Probleme habe ich bereits beseitigt, obwohl sie noch im log auftauchen.

VG und Danke
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 04 Dezember 2020, 23:46:54
Zitat von: siggel am 03 Dezember 2020, 22:51:58
Laut Update-Check habe ich den aktuellen Stand, daher melde ich das mal als wohl noch nicht adressierten Bug:

Kann es sein, dass die URL nicht mehr so lang sein kann wie vorher?

Nein, ich habe noch eine längere URL (391 Zeichen) als Du (251) und die funktioniert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Dezember 2020, 15:28:13
Hallo Christian,

ich habe Deine Konfiguration mit dem von Dir geposteten Buffer und der alten Version (3.5.22 - 7.2.2020) getestet und dort kommt ebenfalls


2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-15 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-16 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-18 (matched)
2020.12.05 15:14:12 5: BYD_Status: DoDeleteIfUnmatched: check reading BatteryInformation-19 (matched)


Kannst Du ein Log inkl. Buffer posten in dem man sieht, was bei Dir mit der alten Version passiert ?
Irgendwo muss da ja ein Unterschied sein. Eventuell an einer ganz anderen Stelle?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 05 Dezember 2020, 18:14:47
Zitat von: StefanStrobel am 05 Dezember 2020, 15:28:13
Hallo Christian,

ich habe Deine Konfiguration mit dem von Dir geposteten Buffer und der alten Version (3.5.22 - 7.2.2020) getestet und dort kommt ebenfalls

Kannst Du ein Log inkl. Buffer posten in dem man sieht, was bei Dir mit der alten Version passiert ?
Irgendwo muss da ja ein Unterschied sein. Eventuell an einer ganz anderen Stelle?
Ich muss mal schauen, ob ich das noch zurück drehen kann, jedoch weiß ich, dass mit dem Attribut "get04DeleteIfUnmatched 1" die ganzen leeren readings nach dem Parsen gelöscht wurden.

EDIT: Das neue Log mit list Device hängt an.
Im Log sehe ich auch keinen Unterschied, aber hänge dann noch zwei Screenshot des Devices mit an, wo der Unterschied zu sehen ist.
Zwischen den Screenshots habe ich das Modul ausgetauscht und einen shutdown restart gemacht, sowie eine neue Abfrage mit get.
Dann zeigen sich die ganzen leeren readings, die zuvor immer gelöscht wurden.

Gruß
    Christian

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 06 Dezember 2020, 16:30:27
Hallo Stefan,

Aus dem httpmod.tenplate Thread ist mir was bezüglich replacementNNValue aufgefallen:
Zitat von: yersinia am 06 Dezember 2020, 15:43:08Was ich noch nicht ganz verstanden habe, ist warum das dropdown im userAttr nicht zieht:
replacement04Value:40m,60m,80m
Im template (https://svn.fhem.de/trac/changeset/23292/trunk) 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?
Dieses Verhalten hat man auch, wenn man bei einem HTTPMOD-Device manuell im userAttr das replacementNNValue in ein DropDown-Attribut umwandelt - danach wird das replacementNNValue wie oben beschrieben trotzdem drangehängt. Man kann es manuell löschen und dann funktioniert es mit der DropDown-Auswahl.

Ich finds' etwas kurios, aber wahrscheinlich war die Verwendung des replacementNNValue Attributes auch nie als DropDown gedacht wie ich es im httpmod.template nutzen würde.
Hast du eine Idee, ob man das abstellen könnte? Wäre es sinnvoll?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Dezember 2020, 20:29:00
Hallo yersinia,

danke für den Hinweis.
Die Ursache liegt in einer Funktion, die für jedes verwendete Regex-Attribut automatisch einen userAttr-Eintrag erzeugt, damit man in Fhemweb auf das Attribut klicken kann um es zu ändern.
ich habe gerade bemerkt, dass das gar nicht mehr nötig ist und werde es ausbauen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Dezember 2020, 10:53:00
Hallo Christian,

Dein Problem sollte mit einer neuen Version behoben sein, die ich gestern eingecheckt habe.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Dezember 2020, 10:56:51
Hallo yersinia,

die Sache mit den Attribut-Parametern bei userattr ist nicht ganz so einfach, da es hier am Zusammenspiel zwischen HTTPMOD und Fhemweb hängt. Siehe https://forum.fhem.de/index.php/topic,29972.0.html

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Dezember 2020, 13:07:54
Ergänzung:

die letzte Änderung an Fhemweb sollte auch das Problem mit der Auswahlliste in userattr lösen.
Ich checke noch eine passende Änderung der HTTPMOD-Utils ein.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 13 Dezember 2020, 17:39:00
Zitat von: StefanStrobel am 13 Dezember 2020, 10:53:00
Dein Problem sollte mit einer neuen Version behoben sein, die ich gestern eingecheckt habe.
Das schaue ich mir in den nächsten tagen an, dann gibt's auch feedback.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 13 Dezember 2020, 19:55:08
Hallo Stefan,
Zitat von: StefanStrobel am 13 Dezember 2020, 10:56:51die Sache mit den Attribut-Parametern bei userattr ist nicht ganz so einfach, da es hier am Zusammenspiel zwischen HTTPMOD und Fhemweb hängt. Siehe https://forum.fhem.de/index.php/topic,29972.0.html
Zitat von: StefanStrobel am 13 Dezember 2020, 13:07:54
die letzte Änderung an Fhemweb sollte auch das Problem mit der Auswahlliste in userattr lösen.
Ich checke noch eine passende Änderung der HTTPMOD-Utils ein.
habe ich verfolgt, werde ich die Tage mal testen. Besten Dank!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: yersinia am 14 Dezember 2020, 10:26:22
Hallo Stefan,
ich habe es mit den Templates getestet und es funktioniert. Bedankt. :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gvzdus am 17 Dezember 2020, 09:01:23
Verzeiht, wenn mein Googling zu unbeholfen war, ich aber nicht sicherheitshalber 60 Seiten Forum durchgelesen habe.

Folgende Anregung:
Angenommen mit HTTPMOD soll eine Datenquelle abgefragt werden, die selber wieder periodisch ihre Inhalte erhält und den Zeitstempel der Messwerte erfasst. Die Antwort ist also z.B.
{ "timestamp": 1608195075, "value": 123.5 }
Dann ergeben 2 Verhaltensweisen Sinn:

Beispiel
Der poweropti ist ein Gerät, dass den Stromzählerstand ausliest. Die Einbindung habe ich gestern hier dokumentiert: https://wiki.fhem.de/wiki/Poweropti

Das Gerät pusht alle 10 Sekunden die Daten des Stromzählers in die Cloud. Will man es genau wissen, bietet sich ein Abfrageintervall von HTTPMOD von 10 Sekunden an. Dieses Intervall wird aber nicht synchron sein, sondern idealerweise vielleicht 0-1 Sekunden alte Daten liefern, worst case mit 10 Sekunden Verzug. Perfekt wäre jetzt, von synchronen Uhrzeiten aller beteiligten Systeme auszugehen und zu sagen:
Ich nehme den Zeitstempel der Antwort, schlage mein Lese-Intervall drauf, plus z.B. 1 Sekunde, und dies ergibt - falls in der Zukunft liegend - den Zeitpunkt der nächsten Abfrage von HTTPMOD
Dann wäre nur noch ein konstanter Versatz dabei.

Dafür müsste man HTTPMOD "sagen", ob und wenn wo in der Antwort der Zeitstempel steht, und HTTPMOD bräuchte ein Attribut für den Offset in Millisekunden, wann die nächste Abfrage erfolgen soll.

Eine ähnliche Frage befindet sich hier:
https://forum.fhem.de/index.php?topic=71865.0

P.S. In dem Beispiel der ähnlichen Frage braucht es sogar gar kein zu spezifizierendes Attribut "Wo findest Du den Zeitstempel der abgefragten Ergebnisse?": Dort hat der API-Entwickler den Date-Header der HTTP-Response sauber auf diesen Zeitstempel gesetzt. Das könnte ein sinnvolles Default für HTTPMOD sein, dass verwendet wird, wenn nichts anderes angegeben wurde, aber das Attribut "syncOffsetMilliseconds" gesetzt wurde.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 18 Dezember 2020, 01:08:44
1.: Kann man es nicht mit "event-on-change-reading" lösen?
2.: Macht wenig Sinn. Wie garantierst Du, dass die Zeiten von der Webseite und von Fhem immer syncrhonisiert sind?

Ggf kannst Du auch ein Reading mit dem Timestamp generieren lassen, und darauf ein notify reagieren lassen, dass ein "at timestamp +x" ein reread auslöst.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gvzdus am 18 Dezember 2020, 08:15:20
> 1.: Kann man es nicht mit "event-on-change-reading" lösen?

Nein. Es ist ja etwas völlig Unterschiedliches, ob mein Stromzähler weiterhin 100 Watt Bezug meldet, oder ob er sich nicht mehr meldet. Sinnvoll wäre in dem Szenario, ein Watchdog einzurichten, dass fehlende Updates - auch auf gleiche Zahlen - alarmiert.

> 2. Macht wenig Sinn. Wie garantierst Du, dass die Zeiten von der Webseite und von Fhem immer syncrhonisiert sind?

Dafür haben unsere Urväter NTP erfunden. Nein, eine Garantie ist es nicht. Aber synchronisierte Uhren sind die Regel. Und wenn mal nicht?
a) timestamp in der Zukunft: Dann min(timestamp of API, clienttime) + Loglevel -> Default-Verhalten
b) timestamp in der Vergangenheit: Mein Vorschlag war:
"waittime_nextpoll = (timestamp of API + fixOffset + interval - clienttime)
Ergänzen wir es um eine Auffanglösung:
"waittime_nextpoll -= interval / 10 if (waittime_nextpoll < interval * 9 / 10)";

Dann nähert sich beim 10-Sekunden-Interval eben das Polling in 1-Sekunden-Schritten an die gewünschte Synchronisation an.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gvzdus am 18 Dezember 2020, 08:31:02
ZitatGgf kannst Du auch ein Reading mit dem Timestamp generieren lassen, und darauf ein notify reagieren lassen, dass ein "at timestamp +x" ein reread auslöst.

Ja, das müsste gehen. Interessante Idee. Allerdings - wenn die letzte (erfolgreiche Messung) die nächste Messung verzögert triggert - dann müsste das Intervall als Fallback agieren, damit das System ggf. wieder anläuft. Also z.B. Intervall auf 60 Sekunden. Da "reread" aber einen zusätzlichen Read auslöst, hättest Du immer noch die "Bonus-Messung" im 60-Sekunden-Intervall. Alternativ könnte man laufend "interval" neu setzen. Ist aber erstens nicht schön, zweitens mit seiner Sekundenbasis ungenau.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 21 Dezember 2020, 19:08:34
Zitat von: amenomade am 09 Mai 2020, 22:20:45
Aber ich habe auf Deutsch die XPath erklärt ;) Ok, ein einziges Beispiel reicht vielleicht nicht, um das ganze zu verstehen :D

Na dann
//a[contains(., "Euro") and contains(.,"Stoxx")]//span[@class="quote"]
oder
//span[contains(., "Euro") and contains(.,"Stoxx")]/..//span[@class="quote"]
oder
//span[contains(., "Euro") and contains(.,"Stoxx")]/following-sibling::*/span[@class="quote"]

Hallo amenomade,

du hattes mir freundlicherweise geholfen die Börsenindices von dieser Seite auszulesen: https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 (https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1)
Leider hat die ARD beschlossen ab 15.12. diese Seite einzustellen und stattdessen Indexkurse auf dieser Seite anzubieten https://www.tagesschau.de/wirtschaft/boersenkurse/ (https://www.tagesschau.de/wirtschaft/boersenkurse/).

Die Seite hat sich damitomplett verändert, und leider komme ich mit trial und error keinen Schritt weiter, zu mehr reicht es bei mir leider nicht.

Ich hänge mal meine vorherige Definition an, quasi als Startpunkt für deine Hilfe, hoffentlich :-*
efine Indizes_ARD HTTPMOD https://kurse.boerse.ard.de/ard/mobile/index.htn?mobilRedirect=1 600
setuuid Indizes_ARD 5eb660c8-f33f-e986-feed-143cad5ec4289aea
attr Indizes_ARD userattr reading01Format reading01Name reading01OExpr reading01XPath reading02Format reading02Name reading02OExpr reading02XPath reading03Format reading03Name reading03OExpr reading03XPath reading04Format reading04Name reading04OExpr reading04XPath reading05Format reading05Name reading05OExpr reading05XPath reading06Format reading06Name reading06OExpr reading06XPath reading07Format reading07Name reading07OExpr reading07XPath reading08Format reading08Name reading08OExpr reading08XPath
attr Indizes_ARD alias börse.<b>ARD</b>.de
attr Indizes_ARD alignTime 00:01:34
attr Indizes_ARD event-min-interval .*:1800
attr Indizes_ARD event-on-change-reading .*
attr Indizes_ARD group Index
attr Indizes_ARD reading01Format %.0f
attr Indizes_ARD reading01Name dax
attr Indizes_ARD reading01OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val
attr Indizes_ARD reading01XPath //a[contains(., 'Dax')]/span[@class="quote"]
attr Indizes_ARD reading02Format %.0f
attr Indizes_ARD reading02Name dow_jones
attr Indizes_ARD reading02OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val
attr Indizes_ARD reading02XPath //a[contains(., 'Jones')]/span[@class="quote"]
attr Indizes_ARD reading03Format %.0f
attr Indizes_ARD reading03Name euro_stoxx_50
attr Indizes_ARD reading03OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val
attr Indizes_ARD reading03XPath //a[contains(.,"Euro") and contains(.,"Stoxx")]//span[@class="quote"]
attr Indizes_ARD reading04Format %.0f
attr Indizes_ARD reading04Name nasdaq_100
attr Indizes_ARD reading04OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val
attr Indizes_ARD reading04XPath //a[contains(., 'Nasdaq')]/span[@class="quote"]
attr Indizes_ARD reading05Name dax_perc
attr Indizes_ARD reading05OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;; $val =~ s/\%//g;; $val
attr Indizes_ARD reading05XPath //a[contains(., 'Dax')]/span[@class="change pos" or @class="change neg"]
attr Indizes_ARD reading06Name dow_jones_perc
attr Indizes_ARD reading06OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;; $val =~ s/\%//g;; $val
attr Indizes_ARD reading06XPath //a[contains(., 'Jones')]/span[@class="change pos" or @class="change neg"]
attr Indizes_ARD reading07Name euro_stoxx_50_perc
attr Indizes_ARD reading07OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;; $val =~ s/\%//g;; $val
attr Indizes_ARD reading07XPath //a[contains(.,"Euro") and contains(.,"Stoxx")]//span[@class="change pos" or @class="change neg"]
attr Indizes_ARD reading08Name nasdaq_100_perc
attr Indizes_ARD reading08OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;; $val =~ s/\%//g;; $val
attr Indizes_ARD reading08XPath //a[contains(., 'Nasdaq')]/span[@class="change pos" or @class="change neg"]
attr Indizes_ARD room Finance
attr Indizes_ARD sortby 1
attr Indizes_ARD stateFormat Dax: [$name:dax] (<span style='color:{(ReadingsVal('$name','dax_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dax_perc]%</span>)<br>\
Dow Jones: [$name:dow_jones] (<span style='color:{(ReadingsVal('$name','dow_jones_perc','') < 0 ? "red":"#2e5e87")}'>[$name:dow_jones_perc]%</span>)<br>\
EuroStoxx50: [$name:euro_stoxx_50] (<span style='color:{(ReadingsVal('$name','euro_stoxx_50_perc','') < 0 ? "red":"#2e5e87")}'>[$name:euro_stoxx_50_perc]%</span>)<br>\
Nasdaq100: [$name:nasdaq_100] (<span style='color:{(ReadingsVal('$name','nasdaq_100_perc','') < 0 ? "red":"#2e5e87")}'>[$name:nasdaq_100_perc]%</span>)
attr Indizes_ARD timeout 5
attr Indizes_ARD verbose 0


Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 22 Dezember 2020, 11:47:18
Man muss nicht unbedingt in FHEM arbeiten, und alles per try and error über HTTPMOD machen. Ich nutze gerne http://xpather.com/
Dort ein Teil des Quellcodes der Seite kopieren (einige Fehler korrigieren), und los geht's ;)

<div class="list_securities">
<ul>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/dax-index-846900/';">
          <span>
            <span class="name">DAX ®</span>
            <span class="change cf pos">
              <span>+122,10</span>
              <span>+0,92%</span>
            </span>
          </span>
          <span class="price"><span class="icon_pos">13.368,40</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/mdax-index-846741/';">
          <span>
            <span class="name">MDAX ®</span>
            <span class="change cf pos">
              <span>+187,67</span>
              <span>+0,63%</span>
            </span>
          </span>
          <span class="price"><span class="icon_pos">30.054,14</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/57691/';">
          <span>
            <span class="name">E-STOXX 50</span>
            <span class="change cf neg">
              <span>-1,78</span>
              <span>-0,05%</span>
            </span>
          </span>
          <span class="price"><span class="icon_neg">3.481,62</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/47776/';">
          <span>
            <span class="name">DOW JONES</span>
            <span class="change cf neg">
              <span>-38,22</span>
              <span>-0,13%</span>
            </span>
          </span>
          <span class="price"><span class="icon_neg">30.170,81</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/eu0009652759-25108390/';">
          <span>
            <span class="name">EUR/USD</span>
            <span class="change cf neg">
              <span>-0,0017</span>
              <span>-0,14%</span>
            </span>
          </span>
          <span class="price"><span class="icon_neg">1,2221$</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/xc0009677409-4770764/';">
          <span>
            <span class="name">BRENT</span>
            <span class="change cf neg">
              <span>-0,42</span>
              <span>-0,83%</span>
            </span>
          </span>
          <span class="price"><span class="icon_neg">50,36$</span></span>
        </li>
       
        <li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/xc0009655157-4770761/';">
          <span>
            <span class="name">Gold USD</span>
            <span class="change cf neg">
              <span>-2,88</span>
              <span>-0,15%</span>
            </span>
          </span>
          <span class="price"><span class="icon_neg">1.874,11$</span></span>
        </li>
       
</ul>
</div>


Z.B. Euro Stoxx 50:
//li[contains(.,"E-STOXX 50")]/span[@class="price"]

Lautet:
vom "li" Tag innerhalb dessen "E-STOXX 50" irgendwo steht, will ich den untergeordneten "span" Tag, dessen "class" Property "price" heisst.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 22 Dezember 2020, 14:59:43
Hallo amenomade,

vielen Dank, das funktioniert schon mal im Prinzip, und so wie du es erklärst, verstehe ich es auch.

Es treten jedoch noch 2 Hürden auf, die ich nicht hinbekomme:
<li class="cf linked"  onclick="top.location.href='https://www.tagesschau.de/wirtschaft/boersenkurse/dax-index-846900/';">
  <span>
    <span class="name">DAX ®</span>
    <span class="change cf pos">
      <span>+122,10</span>
      <span>+0,92%</span>
    </span>
  </span>
  <span class="price"><span class="icon_pos">13.368,40</span></span>
</li>


1) DAX kommt in DAX ind MDAX vor, d.h. ich erhalte dann 2 Readings, möchte aber nur den Wert des DAX. Ich habe es mit starts-with() probiert, bin jedoch gescheitert.
2) Neben der prozentualen Änderungen wird auch die absolute Änderung übernommen:

    <span class="change cf pos">
      <span>+122,10</span>
      <span>+0,92%</span>
    </span>


Hast du auch da eine Lösung für mich?

Viele, liebe Grüße
Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 22 Dezember 2020, 17:08:06
Hallo amenomade,

für die prozentualen Änderungen und ohne die absolute Änderung habe ich folgende Lösung gefunden, oder sollte ich lieber sagen sie hat mich gefunden ;)
attr Indizes_ARD reading07Name euro_stoxx_50_perc
attr Indizes_ARD reading07OExpr $val =~ s/\,/./g;; $val =~ s/\+//g;; $val =~ s/\%//g;; $val
attr Indizes_ARD reading07XPath //li[contains(.,"E-STOXX 50")]//span[(@class="change cf pos" or @class="change cf neg")]/span[contains(.,"%")]


Ist diese Lösung so ok?
Fehlt mir nur die Selektion auf DAX und nicht MDAX?

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 22 Dezember 2020, 17:28:01
Hallo amenomade,

so, jetzt habe ich auch eine(!) Lösung für das Ausbleiben von Readings des MDAX gefunden: and not(contains(.,"MDAX"))
attr Indizes_ARD reading01Name dax
attr Indizes_ARD reading01OExpr $val =~ s/\.//g;; $val =~ s/\,/./g;; $val
attr Indizes_ARD reading01XPath //li[contains(.,"DAX") and not(contains(.,"MDAX"))]/span[@class="price"]


Könntest du drüber schauen, ob das eine gute bis brauchbare Lösung ist, bzw. wie du es machen würdest?

Nochmals vielen Dank
Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 22 Dezember 2020, 18:05:21
not(contains')) ist nicht immer das performanteste, aber Du hast ja was mit "contains", was es schon deutlicher macht vorher.

Ich würde so machen:
//span[.='DAX ®']/../../span[@class="price"]
Selbsterklärend, oder? ;)

Ob das wirklich viel  performanter ist, kann ich nicht beurteilen. Sollte zumindest.

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 22 Dezember 2020, 20:35:20
Zitat von: amenomade am 22 Dezember 2020, 18:05:21
Ich würde so machen:
//span[.='DAX ®']/../../span[@class="price"]
Selbsterklärend, oder? ;)

Selbsterklärend, ich spüre da eine leichte Ironie. Den Anfang und das Ende kann ich akzeptieren, aber warum .= vor dem Such-String (hoffentlich ist das letztere nicht schon falsch). Und dann /../../ das ist ja sowas von selbsterklärend. Ich persönlich finde die @ und $ Symbole, oder auch ein paar ;; bzw. auch gerne genommen {}, interessant  ;) ;D

Ich hätte aber noch eine ernsthafte Frage. Kann man für einen Teil der Abfrage eine andere URL nehmen, statt derjenigen in der Definition, und wenn ja, wie? Ich sehe nämlich, dass der Nasdaq nicht auf der Hauptseite, sondern auf einer anderen Seite bereitgestellt wird.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 23 Dezember 2020, 00:13:20
//span[.='DAX ®'] => span Tag, der genau 'DAX ®' enthält. Der Punkt referenziert den jetzigen Tag (ein bisschen wie bei directories in Linux: . ist der wo man steht, .. ist der parent directory.

ZitatKann man für einen Teil der Abfrage eine andere URL nehmen, statt derjenigen in der Definition, und wenn ja, wie?
Ja, man definiert ein zusätzliches get Befehl mit getXXURL, getXXName, getXXXPath und lässt man es mit getXXPoll gleichzeitig abfragen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 23 Dezember 2020, 15:50:38
Zitat von: amenomade am 23 Dezember 2020, 00:13:20
... man definiert ein zusätzliches get Befehl mit getXXURL, getXXName, getXXXPath und lässt man es mit getXXPoll gleichzeitig abfragen.

Hallo amenomade,
cool, hab's erfolgreich umgesetzt, nochmals vielen Dank.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 31 Dezember 2020, 18:13:49
Hallo,

Anbei eine neue Version zum Testen.
Es gibt zwei neue Attribute:

errorLogLevel und errorLogLevelRegex.
Die ändern das LogLevel, mit dem Fehlermeldungen von HttpUtils in HTTPMOD geloggt werden.
Wenn z.B. nur errorLogLevel auf 4 gesetzt wird, dann kommen alle Fehler von HttpUtils auf Level 4.
Wenn dazu noch "timeout" bei errorLogLevelRegex angegeben wird, dann kommen nur Fehlermeldungen, die timeout Enthalten, mit Level 4, der Rest bleibt bei Level 3.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 04 Januar 2021, 13:27:24
Ich benötige den Pfad für die weitere Auswertung im Modul:
my $path = InternalVal($DevName, 'path', '');
switch ($path) {...}


Kann es sein, dass "path" mit dem Update aus den Internals entfernt wurde?
Falls ja, gibt's eine Alternative?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 04 Januar 2021, 17:03:37
Du hast den Path noch in $defs{httpmod_name}{HttpUtils}{path}

Du kannst auch mit InternalVal ("httpmod_name", "HttpUtils", "") das Hash holen, und dann das "path" Element davon nutzen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Januar 2021, 17:04:36
Hallo ares,

ja, die sind beim letzten größeren Update verschoben worden.
Siehe #957 https://forum.fhem.de/index.php/topic,45176.945.html
Das frühere internal path müsste aber noch als $hash->{HttpUtils}{path} erreichbar sein.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 04 Januar 2021, 17:17:59
Hallo amenomade, hallo Stefan,

danke euch beiden erstmal für die parallele Antwort. Die Lösung über Hash und dem passenden Element path muss ich aber erst nachlesen. Ich habe lange nichts in fhem geändert oder erweitert und bin derzeit froh, wenn ich die Probleme noch eingrenzen kann.

Vielleicht kann einer von euch beiden mir ungetestet spontan folgende Code-Zeile anpassen, damit meine Frau ihre Heizung wieder stalken kann? <lieb guck>
my $path = InternalVal('ISGweb', 'path', '');

Viele Grüße
Manfred

Edit meint... falls es hilft, irgendwie hatte ich das Modul wie folgt aufgerufen und dort abhängig vom Pfad die Verarbeitung umgesetzt:

attr ISGweb reading00Name ISGwebUtils
attr ISGweb reading00OExpr ISGwebUtils_OExpr($val);;
attr ISGweb reading00Regex (?s)(?:"sub_nav"|"werte")(.+)"footer"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 04 Januar 2021, 17:47:42
Zitat von: ares am 04 Januar 2021, 17:17:59
Vielleicht kann einer von euch beiden mir ungetestet spontan folgende Code-Zeile anpassen, damit meine Frau ihre Heizung wieder stalken kann? <lieb guck>
my $path = InternalVal('ISGweb', 'path', '');

my $path = $defs{ISGweb}{HttpUtils}{path};
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ares am 04 Januar 2021, 17:53:04
Hallo amenomade,

funktioniert wunderbar.

Herzlichen Dank!
Manfred
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 Januar 2021, 16:59:26
Hallo,

seit in der neuen Version von HTTPMOD das bodyDecode-Feature mit 'auto' als Default funktioniert (vorher war es aufgrund eines Bugs eine inaktiv), hat es nur Probleme bereitet und scheinbar nichts gebracht.
Ursprünglich hatte ich das aufgrund der Diskussion um Memory-Leaks bei einigen Perl-Versionen implementiert und dachte dass es eine gute Idee wäre, wenn es schon einen encoding-Header gibt, diesen dann auch zu nutzen um den Body zu dekodieren.
(siehe auch https://forum.fhem.de/index.php/topic,84372.690.html)

Ich denke dass es sinnvoller ist das bleiben zu lassen, da doch einige Leute danach bei der Verarbeitung von JSON-Daten  Fehler bekommen, wenn die daten ursprünglich als utf8 geliefert werden und von bodyDecode dann dekodiert werden.

Anbei eine neue Version, bei der bodyDecode per default wieder auf 'none' steht. Ein Teil des Features steckt in Utils, die nach lib/FHEM/HTTPMOD gehört.

Wie seht Ihr das? Ich tendiere dazu, das so einzuchecken...

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Januar 2021, 16:45:58
Und hier gleich noch ein neues Feature:

attr MeinHTTPMOD setXXFollowGet GetName

sorgt dafür, dass nach einem set automatisch ein get ausgeführt wird, um bei Bedarf die Readings zu aktualisieren.
Der Wert nach dem Attribut muss dazu dem Namen eines definierten get entsprechen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Pumba9876 am 17 Januar 2021, 03:01:20
musst Fhem neu aufsetzen und nun bekomme ich meine Module die HTTpMod laufen nicht mehr ans rennenCan't locate FHEM/HTTPMOD/Utils.pm in @INC (you may need to install the FHEM::HTTPMOD::Utils module) (@INC contains: . /etc/perl /usr/local/lib/arm-linux-gnueabihf/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/arm-linux-gnueabihf/perl5/5.28 /usr/share/perl5 /usr/lib/arm-linux-gnueabihf/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/arm-linux-gnueabihf/perl-base ./FHEM ./FHEM/lib) at ./FHEM/98_HTTPMOD.pm line 69.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 69.
das kommt dann als fehler meldung wenn ichreload 98_HTTPMOD.pm
eingebe wenn ich das Modul anlegen will , kann das Modul nicht laden .
was mache ich falsch.
kann mir irgend wer helfen
Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 17 Januar 2021, 10:35:29
Zitat von: Pumba9876 am 17 Januar 2021, 03:01:20
musst Fhem neu aufsetzen
Hast Du danach ein Update gemacht?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Pumba9876 am 17 Januar 2021, 11:54:59
Ja habe ich es fehlen aber noch weitere Module Webview mqtt_device, und noch ein paar andere.
Gibt es eigentlich irgendwo ein Aufstellung welche Perl Befehle ausführt werden müssen das Fhem ohne meckern funktioniert .
Habe im Netz viele Seiten besucht zur fhem Einrichtung der ein schreibt so der andere so und auf fhem.de habe ich nirgends etwas gefunden. Kann mir da bitte einer etwas auf die Sprünge helfen. Bin ein Laie in den Sachen, bin am Ende nach 10h images erstellen und herum probieren. Wäre schön wenn mir geholfen wird. 
Danke  >:( :'(
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 17 Januar 2021, 12:33:22
Wenn Du ein fhem "update" gemacht hast, sollte das Modul Utils.pm in ./lib/FHEM/HTTPMOD gelandet sein, und Du solltest diese Fehlermeldung nicht haben.

Wenn Module spezifische Perl Sachen brauchen, ist es in der Regel entweder in der Log oder in CommandRef erwähnt.

Was ergibt dann in fhem ein "update check"?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Pumba9876 am 17 Januar 2021, 13:05:35

Downloading https://fhem.de/fhemupdate/controls_fhem.txt fhem Got remote controls_fhem.txt with 2373 entries. Got local controls_fhem.txt with 2372 entries. List of new / modified files since last update: UPD ./CHANGED UPD ./MAINTAINER.txt UPD FHEM/10_CUL_HM.pm UPD FHEM/36_Shelly.pm UPD FHEM/36_ShellyMonitor.pm UPD FHEM/57_Calendar.pm UPD FHEM/71_YAMAHA_MC.pm UPD FHEM/98_HMinfo.pm UPD FHEM/lib/AttrTemplate/general_use.template New entries in the CHANGED file: - bugfix: 57_Calendar: correct event selection for limit:when=tomorrow (forum #97810) - feature: 36_ShellyModule: new module to interwork with 36_Shelly Downloading https://raw.githubusercontent.com/uniqueck/fhem-abfall/master/controls_fhemabfall.txt fhemabfall Got remote controls_fhemabfall.txt with 6 entries. List of new / modified files since last update: UPD FHEM/ABFALL_getEvents.pm UPD FHEM/ABFALL_setUpdate.pm UPD FHEM/57_ABFALL.pm New entries in the CHANGED file: FHEM ABFALL and more last change: 2018-06-13 - update because of calendar api changed

nach Update check
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: amenomade am 17 Januar 2021, 13:10:53
Dann hast Du vermutlich ein anderes Problem. Mach lieber ein neues Thread, und poste dort ein "ls -la /opt/fhem/FHEM" und die Log beim start von Fhem.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 17 Januar 2021, 15:57:45
Zitat von: StefanStrobel am 16 Januar 2021, 16:45:58
Und hier gleich noch ein neues Feature:

attr MeinHTTPMOD setXXFollowGet GetName

sorgt dafür, dass nach einem set automatisch ein get ausgeführt wird, um bei Bedarf die Readings zu aktualisieren.
Der Wert nach dem Attribut muss dazu dem Namen eines definierten get entsprechen.
Hallo Stefan,
vielen Dank für diese Erweiterung, es läuft bei mir bereits und hilft mir sehr im besseren Timing bei der Wechselrichter Abfrage.
Das gleiche dann bitte auch noch bei den Get Attributen und ich kann schön die verschiedenen Abfragen verketten, was jedoch bei falscher Anwendung die Gefahr eines Loops mit sich bringt.
Um das zu bremsen könnte es dann ein weiteres Attribut mit der maximalen Anzahl von getXXFollowGet , über alle Aufrufe gezählt,  geben. Default wäre natürlich 1 .
VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Januar 2021, 17:14:31
Kein Problem.
Ich hoffe nur dass das Feature nicht zu vielen Problemen führt ...

Die Attribute sind: setXXFollowGet / getXXFollowGet sowie maxGetChain (Default 10).
Doku muss ich noch schreiben. Wenn ich das habe und es in den nächsten Tagen keine Problemmeldungen gibt, checke ich es ein.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 19 Januar 2021, 19:09:05
Zitat von: StefanStrobel am 19 Januar 2021, 17:14:31
Ich hoffe nur dass das Feature nicht zu vielen Problemen führt ...

Die Attribute sind: setXXFollowGet / getXXFollowGet sowie maxGetChain (Default 10).
Doku muss ich noch schreiben. Wenn ich das habe und es in den nächsten Tagen keine Problemmeldungen gibt, checke ich es ein.
Wow, bist Du schnell :-)
Lass mir bitte etwas Zeit zum Testen, ich könnte es morgen eventuell mal einbauen.

Mit setXXFollowGet habe ich bisher keine Probleme, es ist sogar eine Optimierung, da es keine feste Verzögerung, wie ich es bisher eingestellt hatte, mehr habe.
Auch die Anzahle für den neuen Aufruf des Devices verringert sich und somit der Overhead im FHEM. Wenn das HTTPMOD einmal läuft, macht es jetzt direkt mehrere Abfragen in einem Rutsch.

Ich habe nicht alles verfolgt, kann ich Deine Module auch mit einem wget abrufen?

VG Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 30 Januar 2021, 15:27:31
Hallo,

ich habe den neuen Stand gerade eingecheckt.
Zwischenversionen lege ich bisher nicht auf einem Server ab, sondern poste sie nur hier im Forum. Daher geht das leider mit wget nicht.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 01 Februar 2021, 18:46:10
Hallo,

ich hab ein paar Tage rumprobiert, aber an einer Stelle hab ich noch ein Verständnisproblem. Was ich erreichen möchte:

Ich möchte von einer Website per JSON API Parameter lesen und schreiben. Dazu habe ich entsprechende Readings angelegt und als readingXXJSON die entsprechenden Tags angegeben. Zusätzlich habe ich ein get-Attribut angegeben, so dass ich das Lesen der Werte auf der fhem-Weboberfläche initiieren kann. Das funktioniert soweit ganz gut, die Werte kommen in den Readings an. Komisch ist zwar, dass der Get-Button in der Weboberfläche irgendwie "klemmen" bleibt, aber ansonsten funktioniert alles.

Wenn ich nun dieselben Parameter auch schreiben möchte, wirds schwieriger. Die Website verlangt hier PUT. Dementsprechend habe ich für die Parameter jeweils put-Attribute definiert, zum einen für die Angabe der Methode mit setXXMethod, und zum anderen die Daten mit setxxData. Auch das funktioniert, die Daten kommen an und bewirken was sie sollen. Nur die korrespondierenden fhem-Readings merken davon nichta uns haben noch den alten Wert. Wie krieg ich das denn hin, dass die upgedated werden? Muß ich dafür selbst notifies schreiben oder geht das geschickter?

Ich füge zum besseren Verständnis mal meine Definition ein:
defmod testairplay4 HTTPMOD http://192.168.2.52:3689/api/outputs/162420883472 0
attr testairplay4 userattr get01Name reading01JSON reading01Name reading01OMap reading02JSON reading02Name set01Data set01IMap set01Method:GET,POST,PUT set01Name set01TextArg:0,1 set02Data set02Max set02Method:GET,POST,PUT set02Min set02Name set02ParseResponse:0,1 setMethod:GET,POST,PUT
attr testairplay4 enableControlSet 1
attr testairplay4 enableCookies 1
attr testairplay4 enforceGoodReadingNames 1
attr testairplay4 extractAllJSON 0
attr testairplay4 get01Name GetValues
attr testairplay4 handleRedirects 1
attr testairplay4 reading01JSON selected
attr testairplay4 reading01Name Selected
attr testairplay4 reading01OMap 0:off, 1:on
attr testairplay4 reading02JSON volume
attr testairplay4 reading02Name Volume
attr testairplay4 set01Data {"selected": $val}
attr testairplay4 set01IMap false:off, true:on
attr testairplay4 set01Method PUT
attr testairplay4 set01Name SetSelected
attr testairplay4 set01TextArg 1
attr testairplay4 set02Data {"volume": $val}
attr testairplay4 set02Max 100
attr testairplay4 set02Method PUT
attr testairplay4 set02Min 0
attr testairplay4 set02Name SetVolume
attr testairplay4 setMethod PUT
attr testairplay4 stateFormat {sprintf("Status: %s, Lautstärke: %d", ReadingsVal($name,"Selected","off"), ReadingsVal($name,"Volume",0))}


Hat jemand nen Tipp für mich?


Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 01 Februar 2021, 21:13:39
Hallo,

die neueste Version hat ein neues Attribut, mit dem man nach einem Set automatisch ein Get initiieren kann. Genau für solche Zwecke. Das habe ich ein paar Posts weiter oben beschrieben.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 02 Februar 2021, 09:02:28
Hi,

super, vielen Dank! Hab ich gleich probiert, und tut auch. Irgendwas stimmt bei mir dennoch nicht: die Werte der readings sind zwar aktualisiert, ich muß aber trotzdem ein manuelles refresh des Browsers anstoßen, damit ich die neuen Werte auch sehe. Hast Du da ne Idee?

Und nochmal rein zum Verständnis der Idee für mich: Ich hatte verstanden, dass immer die Zahl den Zusammenhang zwischen z.B. Reading und Get-Funktion herstellt. Da ist es ja auch so. Bei set01FollowGet muß man als Parameter aber nochmal explizit den Namen der Get-Funktion angeben, wo ich eigentlich ein Boolean bzw. eine 1 erwartet hätte um auszudrücken, dass die mit den get01-Attributen beschriebene Funktion ausgeführt werden soll. Wie gesagt, kann man so machen, ist für mich so nur unerwartet. Aber vielleicht hab ich irgendwas ja auch noch nicht richtig verstanden...

Gruß
Beaune
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 02 Februar 2021, 11:06:09
Zitat von: beaune am 02 Februar 2021, 09:02:28
Und nochmal rein zum Verständnis der Idee für mich: Ich hatte verstanden, dass immer die Zahl den Zusammenhang zwischen z.B. Reading und Get-Funktion herstellt. Da ist es ja auch so. Bei set01FollowGet muß man als Parameter aber nochmal explizit den Namen der Get-Funktion angeben, wo ich eigentlich ein Boolean bzw. eine 1 erwartet hätte um auszudrücken, dass die mit den get01-Attributen beschriebene Funktion ausgeführt werden soll. Wie gesagt, kann man so machen, ist für mich so nur unerwartet. Aber vielleicht hab ich irgendwas ja auch noch nicht richtig verstanden...
Hallo Beaune,

das set01FollowGet kann einen beliebigen get Aufruf beinhalten und dort dann den Namen, nicht die Nummer.
Stefan hat auch noch ein get01FollowGet eingebaut, mit dem man dann eine Kette von get Aufrufen durchlaufen kann, aber Vorsicht, es könnte zu einem Loop kommen, der dann durch mit maxGetChain limitiert wird.

Zitat
Die Attribute sind: setXXFollowGet / getXXFollowGet sowie maxGetChain (Default 10).

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Februar 2021, 18:02:20
Hallo,

ein set01FollowGet 01 um per Zahl auf die Get-Nummer zu verweisen wäre auch eine Variante gewesen.
So wie ich es jetzt gemacht habe, war es einfacher, da ich nur die getFn so aufrufe wie bei einem Befehl des Anwenders.
Vielleicht baue ich das mit der Nummer noch zusätzlich ein, damit es konsistenter ist :-)

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Februar 2021, 18:46:15
Hallo zusammen,

das Thema decoding / encoding von Zeichensätzen macht ja immer wieder Probleme.
Ich habe jetzt nochmal versucht, den Default-Wert für readingXYEncode zu optimieren.

Die Problematik ist ja die:
Falls ein Server / Gerät seine HTTP-Response als utf-8 (oder etwas anderes) kodiert sendet und der Response-Body nicht passend dekodiert wird, sollten die Readings nicht nochmal utf-8 encoded werden. Sonst werden statt Umlauten ggf. zwei seltsame Sonderzeichen dargestellt.
Falls aber bodyDecode gesetzt ist und die Response in das Perl-interne Format dekodiert wurde, dann ist ein encode utf-8 für die Readings sinnvoll. In der Regel möchte man die Readings ja im Browser vernünftig lesen können.
Falls die Response ohne charset-Header gesendet wird, dann kann man nur raten und jede Aktion kann falsch sein.

In jedem Fall gilt:
wer Probleme vermeiden möchte, sollte bodyDecode ebenso wie readingXYEncode (oder readingEncode für alle Readings) explizit so setzen, wie es für den eigenen Anwendungsfall passt.
In der meisten Fällen ist bodyDecode auto sinnvoll, nur der JSON-Parser kommt damit wohl nicht klar und möchte undekodiertes utf-8 haben.

Per Default ist bodyDecode inaktiv (sonst gab es beim Parsen immer wieder Probleme).
Per Default wird ein Reading utf-8 encoded, wenn der Response-Body mir bodyDecode dekodiert wurde oder wenn kein charset im Header stand.

Wenn das so keine Probleme macht, würde ich die angehängte neue Version demnächst einchecken.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 19 März 2021, 19:26:17
Mal ne andere Frage zu HTTPMOD:

Ich würde gerne ein set definieren, dass kein HTTP-Telegramm aussendet, sondern lediglich ein lokales Reading setzt. Hört sich für HTTPMOD irgendwie unlogisch an, ich weiß, aber wenn ein Device mehrere Webcommands hat und man möchte zusätzlich noch was lokales definieren, kann das schon Sinn machen, weil dann alle Kommandos als WebCmd verfügbar kompakt sind.

In der fhem Referenz hab ich dazu gefunden:
Zitatset[0-9]*Local
defines that no HTTP request will be sent. Instead the value is directly set as a reading value.

Das scheint aber gar nicht implementiert zu sein, oder ich verstehe zumindest nicht wie man es benutzen soll. Kann das jemand aufklären? Oder mir nen Tipp geben, wie ich ein selbst definiertes lokales reading mit diesem Modul setzen kann?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 März 2021, 19:53:54
Hallo,

wenn Deine Modulversion nicht veraltet ist sollte folgendes gehen:

attr myDevice set01Name Test
attr myDevice set01TextArg 1
attr myDevice set01Local 1


danach geht

set myDevice Test hallo


Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 19 März 2021, 20:08:29
Du hast recht... war noch auf der Version von Post #1040. Mit der aktuellen gehts.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 20 März 2021, 12:28:49
Noch ne Frage: Wenn man das so macht, dann wird zwar der Wert des Readinsg geschrieben, es wird aber kein Event erzeugt. Ich kann also nicht per notify auf dieses Command reagieren. Wie kann man das lösen? Muß man dann ein SetFollowGet machen? Aber dann müßte es ja auch ein get[0-9]*Local geben. was es ja nicht gibt. Oder gibt es andere Möglichkeiten?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 20 März 2021, 14:07:39
Zitat von: beaune am 20 März 2021, 12:28:49
Noch ne Frage: Wenn man das so macht, dann wird zwar der Wert des Readinsg geschrieben, es wird aber kein Event erzeugt.
Hast Du eventuell ein event-on-*-reading gesetzt? Da müsstest Du das neue reading dann auch aufnehmen.

VG Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 21 März 2021, 12:17:59
Hi, hatte ich auch schon überlegt, aber nein, ich verwende event-on-... hier nicht. Meine Vermutung ist eher, dass da noch ein Bug in der Implementierung des Attributs setXXLocal vorliegt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 März 2021, 13:26:23
so ist / war es. Hab gerade eine neue Version eingecheckt, bei der auch für setXXLocal readings ein Event erzeugt wird. Ohne Event ist es nicht sinnvoll.
Die neue Version kommt ab morgen per update.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 21 März 2021, 18:24:37
Hab gerade probiert...läuft. Danke für die Korrektur.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mi.ke am 22 März 2021, 14:38:35
Hallo,

ich vermisse in HTTPMOD das Internals "code".
Hier wurden früher die HTTP-ServerStatusCodes 200|404 etc. angezeigt.

Wie bekomm ich Seitenstatus nun ausgelesen bzw. könnte "code" wieder den Weg in die Internals finden ?

cheers
mi.ke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 März 2021, 17:49:48
Hallo mi.ke,

die Internals von den Httputils sind beim letzten größeren Update verschoben worden.
Siehe #957 https://forum.fhem.de/index.php/topic,45176.945.html

oder auch #1025

Das frühere internal code und alle anderen Internals, die von den Httputils gesetzt werden, sind aber weiterhin als $hash->{HttpUtils}{code} erreichbar.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mi.ke am 22 März 2021, 18:51:32
Zitat von: StefanStrobel am 22 März 2021, 17:49:48

Das frühere internal code und alle anderen Internals, die von den Httputils gesetzt werden, sind aber weiterhin als $hash->{HttpUtils}{code} erreichbar.


Hallo Stefan,
danke für Deine schnelle Antwort.
Aber ich muss gestehen "$hash->{HttpUtils}{code}" sagt mir leider gar nichts.
Wie und wo muss/kann ich dies verwenden? userReadings?
Kannst Du mir bitte nen Schubbs geben
cheers
mi.ke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 März 2021, 20:34:46
Sorry, das war wohl zu stark verkürzt.

Ein Internal ist ja ein Key im Device-Hash des Fhem-Geräts. Das Internal "code" war also intern als  $defs{httpmod_name}{code} zu erreichen oder eben über die Funktion InternalVal(httpmod_name, 'code', '');

Jetzt sind alle Einträge, die von den HttpUtils erzeugt wurden, in einem weiteren Hash, der über InternalVal(httpmod_name, 'HttpUtils', ''); oder $defs{httpmod_name}{HttpUtils} erreichbar ist drin.

Innerhalb von HTTPMOD verwende ich immer die Variable $hash als Pointer auf den aktuellen Geräte-Hash.
$hash->{HttpUtils}{code} ist also das gleiche wie $defs{httpmod_name}{HttpUtils}{code}

In Post 1025 wurde das schon mal mit Beispielen diskutiert.

Ich hoffe das hilft weiter.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mi.ke am 22 März 2021, 23:16:12
Dank Dir für die ausführliche Erklärung.
Die Abfragen funktionieren jetzt wieder wie zuvor.
Klasse, Dank Dir.
cheers
mi.ke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 30 März 2021, 14:45:04
Ich kann mittels HTTPMOD die Adressen von Unterseiten einer Webseite mittels regex als readings (iso-1 bis -5) darstellen:


iso-1 20210610
iso-2 20211119
iso-3 20220516
iso-4 20221025
iso-5 20230505


Gibt es eine Möglichkeit diese Readings in der Definition einer weiteren HTTPMOD-Instanz zu verwenden:

define Eclipse HTTPMOD https://www.webseite.com//iso-1 86400
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: frank am 30 März 2021, 14:51:43
du kannst auch unterschiedliche adressen/gets in einer instanz abrufen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: uwirt am 30 März 2021, 16:47:28
Wie fügt man denn das Reading der URL an?


   
attr mydevice get01URL https://www.webseite.com/location?iso=$iso-1
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 31 März 2021, 09:35:45
Zitat von: uwirt am 30 März 2021, 16:47:28
Wie fügt man denn das Reading der URL an?
attr mydevice get01URL https://www.webseite.com/location?iso=$iso-1

Dafür gibt es Replacements: https://wiki.fhem.de/wiki/HTTPMOD#Further_replacements_of_URL.2C_header_or_post_data

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 14 April 2021, 18:44:34
Hallo zusammen,

bin gerade dabei, die von Damian vorgestellte Möglichkeit der Abfrage einer Wunderground Wetterstation umzusetzen.

Vorweg muss ich sagen, dass ich eine sehr alte Version von HTTPMOD nutze...  :-[

Bei Abfrage der Wetterseite wird dabei das internal buf mit sehr viel Text gefüllt.
Gibt es eine Möglichkeit, den Text im internal buf - oder auch den buf komplett - auszublenden?

Bräuchte ich nur aus Gründen der Übersichtlichkeit.  ;)

Danke schonmal für jegliche Hilfe und Tipps!

VG
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mi.ke am 14 April 2021, 19:19:07
Moin,

Attribut: showBody

auf 0


LG
mi.ke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 14 April 2021, 19:47:49
Hallo mi.ke,

danke für den Tipp, aber das funktioniert leider nicht...

VG
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mi.ke am 14 April 2021, 20:12:48
wenn das Internal "buf" heißt hilft nur update
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Vize am 14 April 2021, 20:59:27
Hi mi.ke,

jepp, das internal heißt buf...

VG
Andreas
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Benni am 24 April 2021, 22:20:02
Hallo Stefan,

ich bin gerade dabei, meinen neuen Whirlpool mit HTTPMOD in FHEM einzubinden.

Ich habe soweit auch schon alles drin und ich bekomme per get die benötigten Status-Infos und kann per set-Commands auch schon alles schalten, was man da schalten kann.
Die Status-Informationen polle ich aktuell in einem Interval von 5 Minuten. So weit so gut!

Allerdings ist es bei dieser API so, dass bei einem set-Command keine Antwort kommt, genauer gesagt, kommt im Erfolgsfall einfach eine leere JSON-Antwort zurück. Um nun die Schaltaktion auch zeitnah in den Readings sichtbar zu machen, müsste ich also direkt nach einem set-Command einen get für die Status-Informationen ausführen.

Leider habe ich dazu noch keine Möglichkeit gefunden.

Das HTTPMOD-Device erzeugt beim set anscheinend zwar einen Event, der enthält aber keine Information darüber, dass der Event durch einen Set ausgelöst wurde und unterscheidet sich damit leider nicht von einer Änderung des gleichnamigen Readings.

Gibt es da etwas, was ich bisher übersehen habe?

Danke dir!

gb#
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Wolle02 am 25 April 2021, 10:53:51
Zitat von: Benni am 24 April 2021, 22:20:02
Allerdings ist es bei dieser API so, dass bei einem set-Command keine Antwort kommt, genauer gesagt, kommt im Erfolgsfall einfach eine leere JSON-Antwort zurück. Um nun die Schaltaktion auch zeitnah in den Readings sichtbar zu machen, müsste ich also direkt nach einem set-Command einen get für die Status-Informationen ausführen.

Leider habe ich dazu noch keine Möglichkeit gefunden.

Schau mal, ob dieses Attribut eventuell das ist was du suchst:

(get|set)[0-9]*FollowGet
allows to chain a get command after another set or get command.
If for example you want to set a new required temerature with a set 'TargetTemp' command and this set command changes the temperature with a series of HTTP requests in your heating system, then you can automaticaly do a get 'TargetTemp' to read out the new value from your heating.
The value of this attribute must match a defined get command name.


Leider bin ich kein Nativ English Speaker, so dass ich das auch falsch verstanden haben kann. Ist leider immer schwierig reine englische Dokus zu lesen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Benni am 25 April 2021, 11:39:53
Zitat von: Wolle02 am 25 April 2021, 10:53:51
Schau mal, ob dieses Attribut eventuell das ist was du suchst:

(get|set)[0-9]*FollowGet
allows to chain a get command after another set or get command.
If for example you want to set a new required temerature with a set 'TargetTemp' command and this set command changes the temperature with a series of HTTP requests in your heating system, then you can automaticaly do a get 'TargetTemp' to read out the new value from your heating.
The value of this attribute must match a defined get command name.


Hallo Wolle02,

super! Genau das habe ich gesucht!

Zu meiner Schande muss ich gestehen, dass ich davon ausgegangen bin, der recht umfangreiche Wiki-Artikel zum HTTPMOD-Device wäreaktuell. Aber der kennt dieses Attribut leider (noch) nicht!

Auf die Idee in der CommandRef zu suchen bin ausgerechnet ich, der Leute gern mit RTFM weiterschickt diesmal nicht gekommen.  ;D

Ich hab's getestet und es funktioniert genau so, wie erwartet!

Schönen Sonntag noch!

gb#
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JueFi am 03 Juni 2021, 23:09:03
Hallo Stefan,

ich habe nach langer Zeit mal wieder ein FHEM Update gemacht und bekomme jetzt folgenden Fehler

2021.06.03 22:58:21 1: reload: Error:Modul 98_HTTPMOD deactivated:
Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

2021.06.03 22:58:21 0: Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

Ich war auf Version 98_HTTPMOD.pm 20841 2019-12-28 12:19:51Z StefanStrobel
und bin auf Version 98_HTTPMOD.pm 24185 2021-04-08 10:59:25Z StefanStrobel gegangen

Vielen Dank schon mal vorab für deine Mühe.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 Juni 2021, 09:11:39
Zitat von: JueFi am 03 Juni 2021, 23:09:03
Hallo Stefan,

ich habe nach langer Zeit mal wieder ein FHEM Update gemacht und bekomme jetzt folgenden Fehler

2021.06.03 22:58:21 1: reload: Error:Modul 98_HTTPMOD deactivated:
Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

2021.06.03 22:58:21 0: Can't locate JSON.pm in @INC (@INC contains: ./lib ./FHEM . /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl ./FHEM/lib) at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
BEGIN failed--compilation aborted at lib/FHEM/HTTPMOD/Utils.pm line 671, <$fh> line 170.
Compilation failed in require at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.
BEGIN failed--compilation aborted at ./FHEM/98_HTTPMOD.pm line 67, <$fh> line 170.

Ich war auf Version 98_HTTPMOD.pm 20841 2019-12-28 12:19:51Z StefanStrobel
und bin auf Version 98_HTTPMOD.pm 24185 2021-04-08 10:59:25Z StefanStrobel gegangen
Hi,
das waren ja zwei Jahre kein Update :-) das nenn' ich mal stabil.

In der Zeit gab es massive Umbauten, ich meine auch etwas mit einem eigenen Adressbereich, aber da bin ich nicht wirklich gut informiert.

Ich würde zuerst mal das json.pm nachinstallieren.

Gruß
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: JueFi am 04 Juni 2021, 14:22:54
Hallo Christian,

vielen Dank für deinen Vorschlag.

Das hat Fehler ausgeworfen:
- sudo apt-get install libjson-perl

Und bei der Suche kommt man dann an verschiedenen Stellen vorbei, die dann sowas
- sudo apt-get update && sudo apt-get upgrade
empfehlen.

Wie auch immerm ich habe das System zerlegt - woran du natürlich keine Schuld hast, das habe ich schon selber verbockt.
Naja, war eh noch ein uraltes System (wheezy) und vielleicht ein Zeichen, das mal neu zu machen.

Viele Grüße

Jürgen
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 Juni 2021, 22:57:43
Zitat von: JueFi am 04 Juni 2021, 14:22:54
Und bei der Suche kommt man dann an verschiedenen Stellen vorbei, die dann sowas
- sudo apt-get update && sudo apt-get upgrade
empfehlen.
Okay, das ist von Zeit zu Zeit schon zu Empfehlen und macht einen generellen Upgrade.

Zitat
Das hat Fehler ausgeworfen:
- sudo apt-get install libjson-perl
Danach sollte das aber auch laufen.
Schade, dass es nicht geklappt hat.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 05 Juni 2021, 17:19:30
Hallo,

Das JSON-Modul sollte nur geladen werden, wenn auch in der HTTPMOD-Konfiguration JSON vorkommt. Eigentlich sollte dann aber beim Fehlen des Moduls eine sinnvolle Meldung kommen. Der Crash ist ein Bug, der beim letzten größeren Umbau reinkam. Der wird in der nächsten Version behoben.

Gruss
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: tobi01001 am 05 Juli 2021, 17:23:49
Hi Stefan,

keine Ahnung ob ein Bug oder nicht. Zumindest führt es bei mir zu Problemen mit den Attributen.
Und zwar meine ich, dass durch das Erstellen mittels join und das Anhängen der readingFnAttributes die Attribute regexCompile und event-aggregator zu  regexCompileevent-aggregator werden (und damit unbrauchbar). Zumindest war das bei mir eben so. Ein Leerzeichen hinter regexCompile bzw. generell dem letzten Eintrag hat das für mich korrigiert.

my $AttrList = join (' ',
      '(reading|get|set)[0-9]+(-[0-9]+)?Name',
      '(reading|get|set)[0-9]*(-[0-9]+)?Expr:textField-long',
      '(reading|get|set)[0-9]*(-[0-9]+)?Map',
...
'bodyDecode',
      'regexCompile ') .
      $main::readingFnAttributes; 

... in dem Ausschnitt ist das Leerzeichen bereits drin. Keine Ahnung ob das der korrekte Weg ist.

Jedenfalls war ich auf der Suche nach einem Memory Leak (keine Ahnung ob ein Zusammenhang besteht) und dabei ist mir das in den Attributen aufgefallen.

Vll. kann das ja mal wer verifizieren....

Gruß,
Tobias
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 06 Juli 2021, 19:16:50
Hallo Tobias,

das ist ein Bug. Ich habe gerade eine neue Version eingecheckt.
Ab morgen sollte die per update verteilt werden.

Gruss / Thanx
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: volschin am 08 August 2021, 12:19:25
Hallo zusammen,
ich bin gerade dabei mit Debian Bullseye zu testen.

Dabei sind mir folgende Fehler beim Durchführen der Unittests aufgefallen:
/opt/fhem/t/FHEM/98_HTTPMOD/36_JSONExpr.t ......... ok

#   Failed test 'Outdated Reading 1 with mode text'
#   at /opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t line 17.
#          got: '0'
#     expected: '1'

#   Failed test 'Outdated Reading 2 with mode expression'
#   at /opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t line 18.
#          got: '0'
#     expected: '1'

#   Failed test 'Outdated Reading 3 with mode reading'
#   at /opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t line 19.
#          got: '0'
#     expected: '1'

#   Failed test 'Outdated Reading 4 with mode internal'
#   at /opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t line 20.
#          got: '0'
#     expected: '1'
# Looks like you failed 4 tests of 7.
/opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t ...........
Dubious, test returned 4 (wstat 1024, 0x400)
Failed 4/7 subtests


Vielleicht hilft es ja das noch rechtzeitig bis zum geplanten Release am 14.08.2021 zu beheben.

Viele Grüße
Veit
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 August 2021, 11:55:19
Hallo Veit,

Könntest Du den Test mal einzeln laufen lassen und das Ergebnis posten?

cd /opt/fhem/; perl fhem.pl -t /opt/fhem/t/FHEM/98_HTTPMOD/40_maxAge.t


Vielen Dank
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: volschin am 13 August 2021, 09:30:49
Ist leider gar nicht so einfach, da die Test-Dateien beim Preinstall gelöscht werden.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: volschin am 14 August 2021, 12:32:55
Ich habe gerade einen neuen Bullseye-Build laufen lassen und da gibt es keinen Fehler mehr bei den Unit-Tests von HTTPMOD. Also entweder Du hast jetzt noch dran geschraubt oder die finalen Packages bei Debian haben das Problem behoben.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 August 2021, 12:00:37
Die letzte Änderung war im Juli.
Ich vermute eher, dass es ein Timing-Problem ist und erhöhe mal die Verzögerung vor der Auswertung im Test ...

Gruss / Thanx
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 28 August 2021, 10:01:45
Anbei noch mal eine neue Version zum Testen.
ich habe einiges am Attributs-Handling geändert, so dass Attribute, bei denen das noch nicht funktioniert hat wie reading01IMap, reading02TextArg etc. auch generisch für alle Readings als readingTextArg etc. geschrieben werden können.
Wenn es keine Probleme gibt, würde ich das demnächst einchecken.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Helmi55 am 09 September 2021, 10:53:42
Hallo liebe HTTPMOD Profis
ich hoffe ich werde für den Doppelpost nicht gesteinigt aber im ursprünglichen RIKA Ofen Thread liest anscheinend niemand mehr mit.......

Ich habe eine Verbindung zu meinem Ofen denn ich bekomme Werte wie Temperatur oder Pellet in FHEM übertragen.
Somit stimmt das Login. ABER ich kann nichts an den Ofen senden
Hier ein List vom Ofen
Internals:
   BUSY       0
   DEF        https://www.rika-firenet.com/api/client/xyz/status 60
   FUUID      5c45c884-f33f-ee2d-41a0-8cb8d7c99143a44c
   Interval   60
   LastAuthTry 2021-08-31 15:12:02
   MainURL    https://www.rika-firenet.com/api/client/xyz/status
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       Ofen
   NOTIFYDEV  global
   NR         199
   NTFY_ORDER 50-Ofen
   STATE      T: 23.8 ST: 20 BT:118
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HTTPCookieHash:
     connect.sid;:
       Name       connect.sid
       Options    Path=/; HttpOnly
       Path       
       Value      s%3AZVg4P9QhmyPp8YKE0cp9hM62qt53xiui.M%2FCX3IpnzkhwwS3eHoYvQY0M1BHUXvNAn910QXhBq%2Bo
   HttpUtils:
     NAME       
     addr       https://www.rika-firenet.com:443
     auth       0
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.rika-firenet.com/api/client/xyz/status
     header     Cookie: connect.sid=s%3AZVg4P9QhmyPp8YKE0cp9hM62qt53xiui.M%2FCX3IpnzkhwwS3eHoYvQY0M1BHUXvNAn910QXhBq%2Bo
     host       www.rika-firenet.com
     httpheader HTTP/1.1 200 OK
Server: Cowboy
Connection: close
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Etag: W/"df8-OA9LIdNJ2jK8cuNUzjQwVy5ewTk"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Tue, 31 Aug 2021 13:58:58 GMT
Via: 1.1 vegur
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /api/client/xyz/status
     protocol   https
     redirects  0
     timeout    120
     url        https://www.rika-firenet.com/api/client/xyz/status
     sslargs:
   QUEUE:
   READINGS:
     2021-08-31 15:58:58   Absenkung       12
     2021-08-31 15:58:58   Betriebsart     K
     2021-08-31 15:58:58   BrennTemp       118
     2021-08-31 15:58:58   Frostschutz     4
     2021-08-31 15:58:58   Ofen            1
     2021-08-31 15:58:58   Pellets         10373
     2021-08-31 15:58:58   RaumTemp        23.8
     2021-08-31 15:58:58   SollTemp        20
     2021-08-31 15:58:58   controlsJSON    {"revision":1630418337,"onOff":true,"operatingMode":2,"heatingPower":70,"targetTemperature":"20","bakeTemperature":"340","ecoMode":false,"heatingTimeMon1":"07002200","heatingTimeMon2":"00000000","heatingTimeTue1":"06302200","heatingTimeTue2":"00000000","heatingTimeWed1":"06002200","heatingTimeWed2":"00000000","heatingTimeThu1":"06002200","heatingTimeThu2":"00000000","heatingTimeFri1":"07002200","heatingTimeFri2":"00000000","heatingTimeSat1":"06302200","heatingTimeSat2":"00000000","heatingTimeSun1":"06002200","heatingTimeSun2":"00000000","heatingTimesActiveForComfort":true,"setBackTemperature":"12","convectionFan1Active":false,"convectionFan1Level":0,"convectionFan1Area":0,"convectionFan2Active":false,"convectionFan2Level":0,"convectionFan2Area":0,"frostProtectionActive":false,"frostProtectionTemperature":"4","temperatureOffset":"0","RoomPowerRequest":4,"debug0":0,"debug1":0,"debug2":0,"debug3":0,"debug4":0}
     2021-08-31 15:58:58   controls_RoomPowerRequest 4
     2021-08-31 15:58:58   controls_bakeTemperature 340
     2021-08-31 15:58:58   controls_convectionFan1Active 0
     2021-08-31 15:58:58   controls_convectionFan1Area 0
     2021-08-31 15:58:58   controls_convectionFan1Level 0
     2021-08-31 15:58:58   controls_convectionFan2Active 0
     2021-08-31 15:58:58   controls_convectionFan2Area 0
     2021-08-31 15:58:58   controls_convectionFan2Level 0
     2021-08-31 15:58:58   controls_debug0 0
     2021-08-31 15:58:58   controls_debug1 0
     2021-08-31 15:58:58   controls_debug2 0
     2021-08-31 15:58:58   controls_debug3 0
     2021-08-31 15:58:58   controls_debug4 0
     2021-08-31 15:58:58   controls_ecoMode 0
     2021-08-31 15:58:58   controls_frostProtectionActive 0
     2021-08-31 15:58:58   controls_frostProtectionTemperature 4
     2021-08-31 15:58:58   controls_heatingPower 70
     2021-08-31 15:58:58   controls_heatingTimeFri1 07002200
     2021-08-31 15:58:58   controls_heatingTimeFri2 00000000
     2021-08-31 15:58:58   controls_heatingTimeMon1 07002200
     2021-08-31 15:58:58   controls_heatingTimeMon2 00000000
     2021-08-31 15:58:58   controls_heatingTimeSat1 06302200
     2021-08-31 15:58:58   controls_heatingTimeSat2 00000000
     2021-08-31 15:58:58   controls_heatingTimeSun1 06002200
     2021-08-31 15:58:58   controls_heatingTimeSun2 00000000
     2021-08-31 15:58:58   controls_heatingTimeThu1 06002200
     2021-08-31 15:58:58   controls_heatingTimeThu2 00000000
     2021-08-31 15:58:58   controls_heatingTimeTue1 06302200
     2021-08-31 15:58:58   controls_heatingTimeTue2 00000000
     2021-08-31 15:58:58   controls_heatingTimeWed1 06002200
     2021-08-31 15:58:58   controls_heatingTimeWed2 00000000
     2021-08-31 15:58:58   controls_heatingTimesActiveForComfort 1
     2021-08-31 15:58:58   controls_onOff  1
     2021-08-31 15:58:58   controls_operatingMode 2
     2021-08-31 15:58:58   controls_revision 1630418337
     2021-08-31 15:58:58   controls_setBackTemperature 12
     2021-08-31 15:58:58   controls_targetTemperature 20
     2021-08-31 15:58:58   controls_temperatureOffset 0
     2021-08-31 15:58:58   lastConfirmedRevision 1630417550
     2021-08-31 15:58:58   lastSeenMinutes 0
     2021-08-31 15:58:58   name            vorzimmer
     2021-08-31 15:58:58   oem             RIKA
     2021-08-31 15:58:58   sensors_inputBakeTemperature 1024
     2021-08-31 15:58:58   sensors_inputBoardTemperature 3.3
     2021-08-31 15:58:58   sensors_inputBurnBackFlapSwitch 1
     2021-08-31 15:58:58   sensors_inputCover 1
     2021-08-31 15:58:58   sensors_inputCurrentStage 56
     2021-08-31 15:58:58   sensors_inputCurrentStagePID 56
     2021-08-31 15:58:58   sensors_inputDoor 1
     2021-08-31 15:58:58   sensors_inputExternalRequest 1
     2021-08-31 15:58:58   sensors_inputFlameTemperature 118
     2021-08-31 15:58:58   sensors_inputFlueGasFlapSwitch 1
     2021-08-31 15:58:58   sensors_inputGridContact 1
     2021-08-31 15:58:58   sensors_inputPressureSensor 0
     2021-08-31 15:58:58   sensors_inputPressureSwitch 0
     2021-08-31 15:58:58   sensors_inputRoomTemperature 23.8
     2021-08-31 15:58:58   sensors_inputTargetStagePID 54
     2021-08-31 15:58:58   sensors_inputUpperTemperatureLimiter 1
     2021-08-31 15:58:58   sensors_outputAirFlaps 0
     2021-08-31 15:58:58   sensors_outputAirFlapsTargetPosition 0
     2021-08-31 15:58:58   sensors_outputBurnBackFlapMagnet 0
     2021-08-31 15:58:58   sensors_outputDischargeCurrent 0
     2021-08-31 15:58:58   sensors_outputDischargeMotor 0
     2021-08-31 15:58:58   sensors_outputGridMotor 0
     2021-08-31 15:58:58   sensors_outputIDFan 0
     2021-08-31 15:58:58   sensors_outputIDFanTarget 0
     2021-08-31 15:58:58   sensors_outputIgnition 0
     2021-08-31 15:58:58   sensors_outputInsertionCurrent 0
     2021-08-31 15:58:58   sensors_outputInsertionMotor 0
     2021-08-31 15:58:58   sensors_parameterCleanIntervalBig 360
     2021-08-31 15:58:58   sensors_parameterDebug0 0
     2021-08-31 15:58:58   sensors_parameterDebug1 0
     2021-08-31 15:58:58   sensors_parameterDebug2 0
     2021-08-31 15:58:58   sensors_parameterDebug3 0
     2021-08-31 15:58:58   sensors_parameterDebug4 0
     2021-08-31 15:58:58   sensors_parameterEcoModePossible 0
     2021-08-31 15:58:58   sensors_parameterErrorCount0 1
     2021-08-31 15:58:58   sensors_parameterErrorCount1 0
     2021-08-31 15:58:58   sensors_parameterErrorCount10 0
     2021-08-31 15:58:58   sensors_parameterErrorCount11 0
     2021-08-31 15:58:58   sensors_parameterErrorCount12 0
     2021-08-31 15:58:58   sensors_parameterErrorCount13 0
     2021-08-31 15:58:58   sensors_parameterErrorCount14 0
     2021-08-31 15:58:58   sensors_parameterErrorCount15 0
     2021-08-31 15:58:58   sensors_parameterErrorCount16 0
     2021-08-31 15:58:58   sensors_parameterErrorCount17 0
     2021-08-31 15:58:58   sensors_parameterErrorCount18 0
     2021-08-31 15:58:58   sensors_parameterErrorCount19 0
     2021-08-31 15:58:58   sensors_parameterErrorCount2 0
     2021-08-31 15:58:58   sensors_parameterErrorCount3 0
     2021-08-31 15:58:58   sensors_parameterErrorCount4 1
     2021-08-31 15:58:58   sensors_parameterErrorCount5 0
     2021-08-31 15:58:58   sensors_parameterErrorCount6 0
     2021-08-31 15:58:58   sensors_parameterErrorCount7 0
     2021-08-31 15:58:58   sensors_parameterErrorCount8 0
     2021-08-31 15:58:58   sensors_parameterErrorCount9 0
     2021-08-31 15:58:58   sensors_parameterFabricationNumber 1
     2021-08-31 15:58:58   sensors_parameterFeedRateService 247
     2021-08-31 15:58:58   sensors_parameterFeedRateTotal 10373
     2021-08-31 15:58:58   sensors_parameterFlameSensorOffset 38
     2021-08-31 15:58:58   sensors_parameterIDFanTuning 0
     2021-08-31 15:58:58   sensors_parameterIgnitionCount 2986
     2021-08-31 15:58:58   sensors_parameterKgTillCleaning 700
     2021-08-31 15:58:58   sensors_parameterLanguageNumber 1
     2021-08-31 15:58:58   sensors_parameterOnOffCycleCount 55
     2021-08-31 15:58:58   sensors_parameterPressureSensorOffset 0
     2021-08-31 15:58:58   sensors_parameterRuntimeLogs 0
     2021-08-31 15:58:58   sensors_parameterRuntimePellets 6747
     2021-08-31 15:58:58   sensors_parameterServiceCountdownKg 453
     2021-08-31 15:58:58   sensors_parameterServiceCountdownTime 0
     2021-08-31 15:58:58   sensors_parameterSpiralMotorsTuning 0
     2021-08-31 15:58:58   sensors_parameterStoveTypeNumber 13
     2021-08-31 15:58:58   sensors_parameterVersionMainBoard 227
     2021-08-31 15:58:58   sensors_parameterVersionMainBoardBootLoader 160
     2021-08-31 15:58:58   sensors_parameterVersionMainBoardSub 44501
     2021-08-31 15:58:58   sensors_parameterVersionTFT 227
     2021-08-31 15:58:58   sensors_parameterVersionTFTBootLoader 150
     2021-08-31 15:58:58   sensors_parameterVersionTFTSub 42901
     2021-08-31 15:58:58   sensors_parameterVersionWiFi 111
     2021-08-31 15:58:58   sensors_parameterVersionWiFiBootLoader 101
     2021-08-31 15:58:58   sensors_parameterVersionWiFiSub 12501
     2021-08-31 15:58:58   sensors_statusError 0
     2021-08-31 15:58:58   sensors_statusFrostStarted 0
     2021-08-31 15:58:58   sensors_statusHeatingTimesNotProgrammed 0
     2021-08-31 15:58:58   sensors_statusMainState 1
     2021-08-31 15:58:58   sensors_statusService 0
     2021-08-31 15:58:58   sensors_statusSubError 0
     2021-08-31 15:58:58   sensors_statusSubState 3
     2021-08-31 15:58:58   sensors_statusWarning 0
     2021-08-31 15:58:58   sensors_statusWifiStrength -46
     2021-08-31 15:58:58   stoveFeatures_airFlaps 0
     2021-08-31 15:58:58   stoveFeatures_bakeMode 0
     2021-08-31 15:58:58   stoveFeatures_insertionMotor 0
     2021-08-31 15:58:58   stoveFeatures_logRuntime 0
     2021-08-31 15:58:58   stoveFeatures_multiAir1 1
     2021-08-31 15:58:58   stoveFeatures_multiAir2 1
     2021-08-31 15:58:58   stoveID         xyz
     2021-08-31 15:58:58   stoveType       DOMO MultiAir
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.rika-firenet.com/api/client/xyz/status
   defptr:
     readingBase:
       Absenkung  reading
       Betriebsart reading
       BrennTemp  reading
       Frostschutz reading
       Ofen       reading
       Pellets    reading
       RaumTemp   reading
       SollTemp   reading
       controlsJSON reading
       controls_RoomPowerRequest reading
       controls_bakeTemperature reading
       controls_convectionFan1Active reading
       controls_convectionFan1Area reading
       controls_convectionFan1Level reading
       controls_convectionFan2Active reading
       controls_convectionFan2Area reading
       controls_convectionFan2Level reading
       controls_debug0 reading
       controls_debug1 reading
       controls_debug2 reading
       controls_debug3 reading
       controls_debug4 reading
       controls_ecoMode reading
       controls_frostProtectionActive reading
       controls_frostProtectionTemperature reading
       controls_heatingPower reading
       controls_heatingTimeFri1 reading
       controls_heatingTimeFri2 reading
       controls_heatingTimeMon1 reading
       controls_heatingTimeMon2 reading
       controls_heatingTimeSat1 reading
       controls_heatingTimeSat2 reading
       controls_heatingTimeSun1 reading
       controls_heatingTimeSun2 reading
       controls_heatingTimeThu1 reading
       controls_heatingTimeThu2 reading
       controls_heatingTimeTue1 reading
       controls_heatingTimeTue2 reading
       controls_heatingTimeWed1 reading
       controls_heatingTimeWed2 reading
       controls_heatingTimesActiveForComfort reading
       controls_onOff reading
       controls_operatingMode reading
       controls_revision reading
       controls_setBackTemperature reading
       controls_targetTemperature reading
       controls_temperatureOffset reading
       lastConfirmedRevision reading
       lastSeenMinutes reading
       name       reading
       oem        reading
       sensors_inputBakeTemperature reading
       sensors_inputBoardTemperature reading
       sensors_inputBurnBackFlapSwitch reading
       sensors_inputCover reading
       sensors_inputCurrentStage reading
       sensors_inputCurrentStagePID reading
       sensors_inputDoor reading
       sensors_inputExternalRequest reading
       sensors_inputFlameTemperature reading
       sensors_inputFlueGasFlapSwitch reading
       sensors_inputGridContact reading
       sensors_inputPressureSensor reading
       sensors_inputPressureSwitch reading
       sensors_inputRoomTemperature reading
       sensors_inputTargetStagePID reading
       sensors_inputUpperTemperatureLimiter reading
       sensors_outputAirFlaps reading
       sensors_outputAirFlapsTargetPosition reading
       sensors_outputBurnBackFlapMagnet reading
       sensors_outputDischargeCurrent reading
       sensors_outputDischargeMotor reading
       sensors_outputGridMotor reading
       sensors_outputIDFan reading
       sensors_outputIDFanTarget reading
       sensors_outputIgnition reading
       sensors_outputInsertionCurrent reading
       sensors_outputInsertionMotor reading
       sensors_parameterCleanIntervalBig reading
       sensors_parameterDebug0 reading
       sensors_parameterDebug1 reading
       sensors_parameterDebug2 reading
       sensors_parameterDebug3 reading
       sensors_parameterDebug4 reading
       sensors_parameterEcoModePossible reading
       sensors_parameterErrorCount0 reading
       sensors_parameterErrorCount1 reading
       sensors_parameterErrorCount10 reading
       sensors_parameterErrorCount11 reading
       sensors_parameterErrorCount12 reading
       sensors_parameterErrorCount13 reading
       sensors_parameterErrorCount14 reading
       sensors_parameterErrorCount15 reading
       sensors_parameterErrorCount16 reading
       sensors_parameterErrorCount17 reading
       sensors_parameterErrorCount18 reading
       sensors_parameterErrorCount19 reading
       sensors_parameterErrorCount2 reading
       sensors_parameterErrorCount3 reading
       sensors_parameterErrorCount4 reading
       sensors_parameterErrorCount5 reading
       sensors_parameterErrorCount6 reading
       sensors_parameterErrorCount7 reading
       sensors_parameterErrorCount8 reading
       sensors_parameterErrorCount9 reading
       sensors_parameterFabricationNumber reading
       sensors_parameterFeedRateService reading
       sensors_parameterFeedRateTotal reading
       sensors_parameterFlameSensorOffset reading
       sensors_parameterIDFanTuning reading
       sensors_parameterIgnitionCount reading
       sensors_parameterKgTillCleaning reading
       sensors_parameterLanguageNumber reading
       sensors_parameterOnOffCycleCount reading
       sensors_parameterPressureSensorOffset reading
       sensors_parameterRuntimeLogs reading
       sensors_parameterRuntimePellets reading
       sensors_parameterServiceCountdownKg reading
       sensors_parameterServiceCountdownTime reading
       sensors_parameterSpiralMotorsTuning reading
       sensors_parameterStoveTypeNumber reading
       sensors_parameterVersionMainBoard reading
       sensors_parameterVersionMainBoardBootLoader reading
       sensors_parameterVersionMainBoardSub reading
       sensors_parameterVersionTFT reading
       sensors_parameterVersionTFTBootLoader reading
       sensors_parameterVersionTFTSub reading
       sensors_parameterVersionWiFi reading
       sensors_parameterVersionWiFiBootLoader reading
       sensors_parameterVersionWiFiSub reading
       sensors_statusError reading
       sensors_statusFrostStarted reading
       sensors_statusHeatingTimesNotProgrammed reading
       sensors_statusMainState reading
       sensors_statusService reading
       sensors_statusSubError reading
       sensors_statusSubState reading
       sensors_statusWarning reading
       sensors_statusWifiStrength reading
       stoveFeatures_airFlaps reading
       stoveFeatures_bakeMode reading
       stoveFeatures_insertionMotor reading
       stoveFeatures_logRuntime reading
       stoveFeatures_multiAir1 reading
       stoveFeatures_multiAir2 reading
       stoveID    reading
       stoveType  reading
     readingNum:
       Absenkung  02
       Betriebsart 05
       BrennTemp  06
       Frostschutz 03
       Ofen       08
       Pellets    07
       RaumTemp   01
       SollTemp   04
       controlsJSON 10
       controls_RoomPowerRequest unknown
       controls_bakeTemperature unknown
       controls_convectionFan1Active unknown
       controls_convectionFan1Area unknown
       controls_convectionFan1Level unknown
       controls_convectionFan2Active unknown
       controls_convectionFan2Area unknown
       controls_convectionFan2Level unknown
       controls_debug0 unknown
       controls_debug1 unknown
       controls_debug2 unknown
       controls_debug3 unknown
       controls_debug4 unknown
       controls_ecoMode unknown
       controls_frostProtectionActive unknown
       controls_frostProtectionTemperature unknown
       controls_heatingPower unknown
       controls_heatingTimeFri1 unknown
       controls_heatingTimeFri2 unknown
       controls_heatingTimeMon1 unknown
       controls_heatingTimeMon2 unknown
       controls_heatingTimeSat1 unknown
       controls_heatingTimeSat2 unknown
       controls_heatingTimeSun1 unknown
       controls_heatingTimeSun2 unknown
       controls_heatingTimeThu1 unknown
       controls_heatingTimeThu2 unknown
       controls_heatingTimeTue1 unknown
       controls_heatingTimeTue2 unknown
       controls_heatingTimeWed1 unknown
       controls_heatingTimeWed2 unknown
       controls_heatingTimesActiveForComfort unknown
       controls_onOff unknown
       controls_operatingMode unknown
       controls_revision unknown
       controls_setBackTemperature unknown
       controls_targetTemperature unknown
       controls_temperatureOffset unknown
       lastConfirmedRevision unknown
       lastSeenMinutes unknown
       name       unknown
       oem        unknown
       sensors_inputBakeTemperature unknown
       sensors_inputBoardTemperature unknown
       sensors_inputBurnBackFlapSwitch unknown
       sensors_inputCover unknown
       sensors_inputCurrentStage unknown
       sensors_inputCurrentStagePID unknown
       sensors_inputDoor unknown
       sensors_inputExternalRequest unknown
       sensors_inputFlameTemperature unknown
       sensors_inputFlueGasFlapSwitch unknown
       sensors_inputGridContact unknown
       sensors_inputPressureSensor unknown
       sensors_inputPressureSwitch unknown
       sensors_inputRoomTemperature unknown
       sensors_inputTargetStagePID unknown
       sensors_inputUpperTemperatureLimiter unknown
       sensors_outputAirFlaps unknown
       sensors_outputAirFlapsTargetPosition unknown
       sensors_outputBurnBackFlapMagnet unknown
       sensors_outputDischargeCurrent unknown
       sensors_outputDischargeMotor unknown
       sensors_outputGridMotor unknown
       sensors_outputIDFan unknown
       sensors_outputIDFanTarget unknown
       sensors_outputIgnition unknown
       sensors_outputInsertionCurrent unknown
       sensors_outputInsertionMotor unknown
       sensors_parameterCleanIntervalBig unknown
       sensors_parameterDebug0 unknown
       sensors_parameterDebug1 unknown
       sensors_parameterDebug2 unknown
       sensors_parameterDebug3 unknown
       sensors_parameterDebug4 unknown
       sensors_parameterEcoModePossible unknown
       sensors_parameterErrorCount0 unknown
       sensors_parameterErrorCount1 unknown
       sensors_parameterErrorCount10 unknown
       sensors_parameterErrorCount11 unknown
       sensors_parameterErrorCount12 unknown
       sensors_parameterErrorCount13 unknown
       sensors_parameterErrorCount14 unknown
       sensors_parameterErrorCount15 unknown
       sensors_parameterErrorCount16 unknown
       sensors_parameterErrorCount17 unknown
       sensors_parameterErrorCount18 unknown
       sensors_parameterErrorCount19 unknown
       sensors_parameterErrorCount2 unknown
       sensors_parameterErrorCount3 unknown
       sensors_parameterErrorCount4 unknown
       sensors_parameterErrorCount5 unknown
       sensors_parameterErrorCount6 unknown
       sensors_parameterErrorCount7 unknown
       sensors_parameterErrorCount8 unknown
       sensors_parameterErrorCount9 unknown
       sensors_parameterFabricationNumber unknown
       sensors_parameterFeedRateService unknown
       sensors_parameterFeedRateTotal unknown
       sensors_parameterFlameSensorOffset unknown
       sensors_parameterIDFanTuning unknown
       sensors_parameterIgnitionCount unknown
       sensors_parameterKgTillCleaning unknown
       sensors_parameterLanguageNumber unknown
       sensors_parameterOnOffCycleCount unknown
       sensors_parameterPressureSensorOffset unknown
       sensors_parameterRuntimeLogs unknown
       sensors_parameterRuntimePellets unknown
       sensors_parameterServiceCountdownKg unknown
       sensors_parameterServiceCountdownTime unknown
       sensors_parameterSpiralMotorsTuning unknown
       sensors_parameterStoveTypeNumber unknown
       sensors_parameterVersionMainBoard unknown
       sensors_parameterVersionMainBoardBootLoader unknown
       sensors_parameterVersionMainBoardSub unknown
       sensors_parameterVersionTFT unknown
       sensors_parameterVersionTFTBootLoader unknown
       sensors_parameterVersionTFTSub unknown
       sensors_parameterVersionWiFi unknown
       sensors_parameterVersionWiFiBootLoader unknown
       sensors_parameterVersionWiFiSub unknown
       sensors_statusError unknown
       sensors_statusFrostStarted unknown
       sensors_statusHeatingTimesNotProgrammed unknown
       sensors_statusMainState unknown
       sensors_statusService unknown
       sensors_statusSubError unknown
       sensors_statusSubState unknown
       sensors_statusWarning unknown
       sensors_statusWifiStrength unknown
       stoveFeatures_airFlaps unknown
       stoveFeatures_bakeMode unknown
       stoveFeatures_insertionMotor unknown
       stoveFeatures_logRuntime unknown
       stoveFeatures_multiAir1 unknown
       stoveFeatures_multiAir2 unknown
       stoveID    unknown
       stoveType  unknown
     readingOutdated:
     requestReadings:
       update:
         Absenkung  reading 02
         Betriebsart reading 05
         BrennTemp  reading 06
         Frostschutz reading 03
         Ofen       reading 08
         Pellets    reading 07
         RaumTemp   reading 01
         SollTemp   reading 04
         controlsJSON reading 10
         controls_RoomPowerRequest reading unknown
         controls_bakeTemperature reading unknown
         controls_convectionFan1Active reading unknown
         controls_convectionFan1Area reading unknown
         controls_convectionFan1Level reading unknown
         controls_convectionFan2Active reading unknown
         controls_convectionFan2Area reading unknown
         controls_convectionFan2Level reading unknown
         controls_debug0 reading unknown
         controls_debug1 reading unknown
         controls_debug2 reading unknown
         controls_debug3 reading unknown
         controls_debug4 reading unknown
         controls_ecoMode reading unknown
         controls_frostProtectionActive reading unknown
         controls_frostProtectionTemperature reading unknown
         controls_heatingPower reading unknown
         controls_heatingTimeFri1 reading unknown
         controls_heatingTimeFri2 reading unknown
         controls_heatingTimeMon1 reading unknown
         controls_heatingTimeMon2 reading unknown
         controls_heatingTimeSat1 reading unknown
         controls_heatingTimeSat2 reading unknown
         controls_heatingTimeSun1 reading unknown
         controls_heatingTimeSun2 reading unknown
         controls_heatingTimeThu1 reading unknown
         controls_heatingTimeThu2 reading unknown
         controls_heatingTimeTue1 reading unknown
         controls_heatingTimeTue2 reading unknown
         controls_heatingTimeWed1 reading unknown
         controls_heatingTimeWed2 reading unknown
         controls_heatingTimesActiveForComfort reading unknown
         controls_onOff reading unknown
         controls_operatingMode reading unknown
         controls_revision reading unknown
         controls_setBackTemperature reading unknown
         controls_targetTemperature reading unknown
         controls_temperatureOffset reading unknown
         lastConfirmedRevision reading unknown
         lastSeenMinutes reading unknown
         name       reading unknown
         oem        reading unknown
         sensors_inputBakeTemperature reading unknown
         sensors_inputBoardTemperature reading unknown
         sensors_inputBurnBackFlapSwitch reading unknown
         sensors_inputCover reading unknown
         sensors_inputCurrentStage reading unknown
         sensors_inputCurrentStagePID reading unknown
         sensors_inputDoor reading unknown
         sensors_inputExternalRequest reading unknown
         sensors_inputFlameTemperature reading unknown
         sensors_inputFlueGasFlapSwitch reading unknown
         sensors_inputGridContact reading unknown
         sensors_inputPressureSensor reading unknown
         sensors_inputPressureSwitch reading unknown
         sensors_inputRoomTemperature reading unknown
         sensors_inputTargetStagePID reading unknown
         sensors_inputUpperTemperatureLimiter reading unknown
         sensors_outputAirFlaps reading unknown
         sensors_outputAirFlapsTargetPosition reading unknown
         sensors_outputBurnBackFlapMagnet reading unknown
         sensors_outputDischargeCurrent reading unknown
         sensors_outputDischargeMotor reading unknown
         sensors_outputGridMotor reading unknown
         sensors_outputIDFan reading unknown
         sensors_outputIDFanTarget reading unknown
         sensors_outputIgnition reading unknown
         sensors_outputInsertionCurrent reading unknown
         sensors_outputInsertionMotor reading unknown
         sensors_parameterCleanIntervalBig reading unknown
         sensors_parameterDebug0 reading unknown
         sensors_parameterDebug1 reading unknown
         sensors_parameterDebug2 reading unknown
         sensors_parameterDebug3 reading unknown
         sensors_parameterDebug4 reading unknown
         sensors_parameterEcoModePossible reading unknown
         sensors_parameterErrorCount0 reading unknown
         sensors_parameterErrorCount1 reading unknown
         sensors_parameterErrorCount10 reading unknown
         sensors_parameterErrorCount11 reading unknown
         sensors_parameterErrorCount12 reading unknown
         sensors_parameterErrorCount13 reading unknown
         sensors_parameterErrorCount14 reading unknown
         sensors_parameterErrorCount15 reading unknown
         sensors_parameterErrorCount16 reading unknown
         sensors_parameterErrorCount17 reading unknown
         sensors_parameterErrorCount18 reading unknown
         sensors_parameterErrorCount19 reading unknown
         sensors_parameterErrorCount2 reading unknown
         sensors_parameterErrorCount3 reading unknown
         sensors_parameterErrorCount4 reading unknown
         sensors_parameterErrorCount5 reading unknown
         sensors_parameterErrorCount6 reading unknown
         sensors_parameterErrorCount7 reading unknown
         sensors_parameterErrorCount8 reading unknown
         sensors_parameterErrorCount9 reading unknown
         sensors_parameterFabricationNumber reading unknown
         sensors_parameterFeedRateService reading unknown
         sensors_parameterFeedRateTotal reading unknown
         sensors_parameterFlameSensorOffset reading unknown
         sensors_parameterIDFanTuning reading unknown
         sensors_parameterIgnitionCount reading unknown
         sensors_parameterKgTillCleaning reading unknown
         sensors_parameterLanguageNumber reading unknown
         sensors_parameterOnOffCycleCount reading unknown
         sensors_parameterPressureSensorOffset reading unknown
         sensors_parameterRuntimeLogs reading unknown
         sensors_parameterRuntimePellets reading unknown
         sensors_parameterServiceCountdownKg reading unknown
         sensors_parameterServiceCountdownTime reading unknown
         sensors_parameterSpiralMotorsTuning reading unknown
         sensors_parameterStoveTypeNumber reading unknown
         sensors_parameterVersionMainBoard reading unknown
         sensors_parameterVersionMainBoardBootLoader reading unknown
         sensors_parameterVersionMainBoardSub reading unknown
         sensors_parameterVersionTFT reading unknown
         sensors_parameterVersionTFTBootLoader reading unknown
         sensors_parameterVersionTFTSub reading unknown
         sensors_parameterVersionWiFi reading unknown
         sensors_parameterVersionWiFiBootLoader reading unknown
         sensors_parameterVersionWiFiSub reading unknown
         sensors_statusError reading unknown
         sensors_statusFrostStarted reading unknown
         sensors_statusHeatingTimesNotProgrammed reading unknown
         sensors_statusMainState reading unknown
         sensors_statusService reading unknown
         sensors_statusSubError reading unknown
         sensors_statusSubState reading unknown
         sensors_statusWarning reading unknown
         sensors_statusWifiStrength reading unknown
         stoveFeatures_airFlaps reading unknown
         stoveFeatures_bakeMode reading unknown
         stoveFeatures_insertionMotor reading unknown
         stoveFeatures_logRuntime reading unknown
         stoveFeatures_multiAir1 reading unknown
         stoveFeatures_multiAir2 reading unknown
         stoveID    reading unknown
         stoveType  reading unknown
Attributes:
   alias      Ofen
   enableCookies 1
   extractAllJSON 1
   get09Name  revision
   get09URL   https://www.rika-firenet.com/api/client/xyz/status
   group      Temperatur
   reAuthRegex id="login"|Unauthorized
   reading01JSON sensors_inputRoomTemperature
   reading01Name RaumTemp
   reading02JSON controls_setBackTemperature
   reading02Name Absenkung
   reading03JSON controls_frostProtectionTemperature
   reading03Name Frostschutz
   reading04JSON controls_targetTemperature
   reading04Name SollTemp
   reading05JSON controls_operatingMode
   reading05Name Betriebsart
   reading05OMap 0:M, 1:A, 2:K
   reading06JSON sensors_inputFlameTemperature
   reading06Name BrennTemp
   reading07JSON sensors_parameterFeedRateTotal
   reading07Name Pellets
   reading08JSON controls_onOff
   reading08Name Ofen
   reading08OMap true:On, false:Off
   reading10Name controlsJSON
   reading10Regex (?s)controls.*?({.*?})
   replacement01Mode expression
   replacement01Regex {{data}}
   room       Favoriten,Ofen
   set11Name  frostProtectionTemperature
   set11Replacement01Value replaceJSON("frostProtectionTemperature", 2)
   set12Name  targetTemperature
   set12Replacement01Value replaceJSON("targetTemperature", 24)
   set13IMap  0:Manuell, 1:Auto, 2:Komfort
   set13Name  controls_operatingMode
   set13Replacement01Value replaceJSON("operatingMode", 2)
   setData    {{data}}
   setURL     https://www.rika-firenet.com/api/client/xyz/controls
   sid01Data  logindaten!!!!!
   sid01URL   https://www.rika-firenet.com/web/login
   sortby     2
   stateFormat T: RaumTemp ST: SollTemp BT:BrennTemp
   timeout    120
   userattr   get05IMap get05Map get05OMap set05Hint set05IMap set05OMap
   verbose    2
   widgetOverride targetTemperature:slider,20,23,24,25,26


Z.B. ist in controlsJSON die targetTemperature vorhanden.

Ich habe ein:
reading04JSON controls_targetTemperature
ein
reading04Name SollTemp
und ein
set12Name targetTemperature

angelegt.
Es wird aber kein Wert übertragen
wenn ich  eingebe: set Ofen targetTemperature 24

sehe ich im eventMonitor = 2021-09-07 12:40:41 HTTPMOD Ofen targetTemperature 24

es passiert aber nichts.

Ist bitte jemand so freundlich und hilft mir weiter.

Ich möchte eigentlich nur die Temperatur oder den Modus verändern. Schaffe es aber nicht

Ich hab mir meinen eigenen Ursprungsthread schon öfter durchgelesen aber anscheinend bin ich jetzt schon blind......

Danke für eure Unterstützung

Gruß
Helmut
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 September 2021, 18:52:03
Hallo Helmut,

setz doch bitte mal verbose für Dein Device auf 5 und poste dann den Auszug aus dem Log, in dem man sieht, was nach dem set so alles passiert.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Helmi55 am 10 September 2021, 19:19:44
Hallo Stefan,
herzlichen Dank das du dir die zeit nimmst und mit hilfst.
Das Logfile erschlägt mich mit Meldungen - hoffe ich habe alle notwendigen LoginDaten und IDs gelöscht
2021.09.10 19:11:51 4: Ofen: GetUpdate called (update)
2021.09.10 19:11:51 4: Ofen: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 19:12:51.162, interval 60
2021.09.10 19:11:51 5: Ofen: AddToQueue adds type update to URL https://www.rika-firenet.com/api/client/xyz/status, no data, no headers, retry 0, initial queue len: 0
2021.09.10 19:11:51 5: Ofen: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.09.10 19:11:51 5: Ofen: Replace called for type update, regex (?^:{{data}}), mode expression, empty value input: https://www.rika-firenet.com/api/client/xyz/status
2021.09.10 19:11:51 5: Ofen: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los (key connect.sid;, destination path is /api/client/xyzstatus)
2021.09.10 19:11:51 5: Ofen: DoCookies is adding Cookie header: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:11:51 4: Ofen: HandleSendQueue sends update with timeout 120 to https://www.rika-firenet.com/api/client/xyz/status, No Data,
header: Cookie: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:11:51 5: Ofen: ReadCallback called from __ANON__
2021.09.10 19:11:51 4: Ofen: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Server: Cowboy
Connection: close
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Etag: W/"df7-Xi2XzA+9UqzLdIbLsR1rWjX72go"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 10 Sep 2021 17:11:51 GMT
Via: 1.1 vegur, body length 3575
2021.09.10 19:11:51 5: Ofen: Read callback: body
{"name":"Vorzimmer","stoveID":"xyz","lastSeenMinutes":0,"lastConfirmedRevision":1631256516,"controls":{"revision":1631256516,"onOff":true,"operatingMode":2,"heatingPower":70,"targetTemperature":"20","bakeTemperature":"340","ecoMode":false,"heatingTimeMon1":"06300900","heatingTimeMon2":"00000000","heatingTimeTue1":"06300900","heatingTimeTue2":"00000000","heatingTimeWed1":"06300900","heatingTimeWed2":"00000000","heatingTimeThu1":"06300900","heatingTimeThu2":"00000000","heatingTimeFri1":"06300900","heatingTimeFri2":"00000000","heatingTimeSat1":"06300900","heatingTimeSat2":"00000000","heatingTimeSun1":"06300900","heatingTimeSun2":"00000000","heatingTimesActiveForComfort":true,"setBackTemperature":"12","convectionFan1Active":false,"convectionFan1Level":0,"convectionFan1Area":0,"convectionFan2Active":false,"convectionFan2Level":0,"convectionFan2Area":0,"frostProtectionActive":false,"frostProtectionTemperature":"4","temperatureOffset":"0.5","RoomPowerRequest":4,"debug0":0,"debug1":0,"debug2":0,"debug3":0,"debug4":0},"sensors":{"inputRoomTemperature":"22.3","inputFlameTemperature":22,"inputBakeTemperature":"1024","statusError":0,"statusSubError":0,"statusWarning":0,"statusService":0,"outputDischargeMotor":0,"outputDischargeCurrent":0,"outputIDFan":0,"outputIDFanTarget":0,"outputInsertionMotor":0,"outputInsertionCurrent":0,"outputAirFlaps":0,"outputAirFlapsTargetPosition":0,"outputBurnBackFlapMagnet":false,"outputGridMotor":false,"outputIgnition":false,"inputUpperTemperatureLimiter":true,"inputPressureSwitch":false,"inputPressureSensor":0,"inputGridContact":true,"inputDoor":true,"inputCover":true,"inputExternalRequest":true,"inputBurnBackFlapSwitch":true,"inputFlueGasFlapSwitch":true,"inputBoardTemperature":"3","inputCurrentStage":74,"inputTargetStagePID":74,"inputCurrentStagePID":74,"statusMainState":1,"statusSubState":3,"statusWifiStrength":-47,"parameterEcoModePossible":false,"parameterFabricationNumber":1,"parameterStoveTypeNumber":13,"parameterLanguageNumber":1,"parameterVersionMainBoard":227,"parameterVersionTFT":227,"parameterVersionWiFi":111,"parameterVersionMainBoardBootLoader":160,"parameterVersionTFTBootLoader":150,"parameterVersionWiFiBootLoader":101,"parameterVersionMainBoardSub":44501,"parameterVersionTFTSub":42901,"parameterVersionWiFiSub":12501,"parameterRuntimePellets":6756,"parameterRuntimeLogs":0,"parameterFeedRateTotal":10388,"parameterFeedRateService":232,"parameterServiceCountdownKg":468,"parameterServiceCountdownTime":0,"parameterIgnitionCount":2993,"parameterOnOffCycleCount":55,"parameterFlameSensorOffset":38,"parameterPressureSensorOffset":0,"parameterErrorCount0":1,"parameterErrorCount1":0,"parameterErrorCount2":0,"parameterErrorCount3":0,"parameterErrorCount4":1,"parameterErrorCount5":0,"parameterErrorCount6":0,"parameterErrorCount7":0,"parameterErrorCount8":0,"parameterErrorCount9":0,"parameterErrorCount10":0,"parameterErrorCount11":0,"parameterErrorCount12":0,"parameterErrorCount13":0,"parameterErrorCount14":0,"parameterErrorCount15":0,"parameterErrorCount16":0,"parameterErrorCount17":0,"parameterErrorCount18":0,"parameterErrorCount19":0,"statusHeatingTimesNotProgrammed":false,"statusFrostStarted":false,"parameterSpiralMotorsTuning":0,"parameterIDFanTuning":0,"parameterCleanIntervalBig":360,"parameterKgTillCleaning":700,"parameterDebug0":0,"parameterDebug1":0,"parameterDebug2":0,"parameterDebug3":0,"parameterDebug4":0},"stoveType":"DOMO MultiAir","stoveFeatures":{"multiAir1":true,"multiAir2":true,"insertionMotor":false,"airFlaps":false,"logRuntime":false,"bakeMode":false},"oem":"RIKA"}
2021.09.10 19:11:51 4: Ofen: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2021.09.10 19:11:51 4: Ofen: extracted JSON values to internal
2021.09.10 19:11:51 5: Ofen: GetCookies is looking for Cookies
2021.09.10 19:11:51 5: Ofen: ExtractSid called, context reading, num unknown
2021.09.10 19:11:51 4: Ofen: checking for redirects, code=200, ignore=0
2021.09.10 19:11:51 4: Ofen: no redirects to handle
2021.09.10 19:11:51 5: Ofen: Read callback sets LAST_REQUEST to update
2021.09.10 19:11:51 5: Ofen: CheckAuth is checking buffer with ReAuthRegex (?^:id="login"|Unauthorized)
2021.09.10 19:11:51 5: Ofen: CheckAuth decided no authentication required
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan2Active to value 0 of JSON controls_convectionFan2Active
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterFlameSensorOffset to value 38 of JSON sensors_parameterFlameSensorOffset
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputAirFlaps to value 0 of JSON sensors_outputAirFlaps
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputBoardTemperature to value 3 of JSON sensors_inputBoardTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading name to value Vorzimmer of JSON name
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterIDFanTuning to value 0 of JSON sensors_parameterIDFanTuning
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionWiFiSub to value 12501 of JSON sensors_parameterVersionWiFiSub
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputPressureSensor to value 0 of JSON sensors_inputPressureSensor
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_revision to value 1631256516 of JSON controls_revision
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputTargetStagePID to value 74 of JSON sensors_inputTargetStagePID
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionTFT to value 227 of JSON sensors_parameterVersionTFT
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterRuntimePellets to value 6756 of JSON sensors_parameterRuntimePellets
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputInsertionMotor to value 0 of JSON sensors_outputInsertionMotor
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_debug4 to value 0 of JSON controls_debug4
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_operatingMode to value 2 of JSON controls_operatingMode
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionMainBoard to value 227 of JSON sensors_parameterVersionMainBoard
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_onOff to value 1 of JSON controls_onOff
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeSun1 to value 06300900 of JSON controls_heatingTimeSun1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount15 to value 0 of JSON sensors_parameterErrorCount15
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusSubError to value 0 of JSON sensors_statusSubError
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputInsertionCurrent to value 0 of JSON sensors_outputInsertionCurrent
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan2Area to value 0 of JSON controls_convectionFan2Area
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeSat1 to value 06300900 of JSON controls_heatingTimeSat1
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_debug2 to value 0 of JSON controls_debug2
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_bakeMode to value 0 of JSON stoveFeatures_bakeMode
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterIgnitionCount to value 2993 of JSON sensors_parameterIgnitionCount
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputFlameTemperature to value 22 of JSON sensors_inputFlameTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputDischargeCurrent to value 0 of JSON sensors_outputDischargeCurrent
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_frostProtectionTemperature to value 4 of JSON controls_frostProtectionTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeThu2 to value 00000000 of JSON controls_heatingTimeThu2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount17 to value 0 of JSON sensors_parameterErrorCount17
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeFri2 to value 00000000 of JSON controls_heatingTimeFri2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterRuntimeLogs to value 0 of JSON sensors_parameterRuntimeLogs
2021.09.10 19:11:51 5: Ofen: Read sets reading oem to value RIKA of JSON oem
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount4 to value 1 of JSON sensors_parameterErrorCount4
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterServiceCountdownKg to value 468 of JSON sensors_parameterServiceCountdownKg
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeMon2 to value 00000000 of JSON controls_heatingTimeMon2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputBurnBackFlapSwitch to value 1 of JSON sensors_inputBurnBackFlapSwitch
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount16 to value 0 of JSON sensors_parameterErrorCount16
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusService to value 0 of JSON sensors_statusService
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount6 to value 0 of JSON sensors_parameterErrorCount6
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_debug1 to value 0 of JSON controls_debug1
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimesActiveForComfort to value 1 of JSON controls_heatingTimesActiveForComfort
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterDebug1 to value 0 of JSON sensors_parameterDebug1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputDoor to value 1 of JSON sensors_inputDoor
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterDebug0 to value 0 of JSON sensors_parameterDebug0
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionWiFi to value 111 of JSON sensors_parameterVersionWiFi
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount12 to value 0 of JSON sensors_parameterErrorCount12
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount5 to value 0 of JSON sensors_parameterErrorCount5
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterFeedRateService to value 232 of JSON sensors_parameterFeedRateService
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeWed2 to value 00000000 of JSON controls_heatingTimeWed2
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_multiAir2 to value 1 of JSON stoveFeatures_multiAir2
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeTue1 to value 06300900 of JSON controls_heatingTimeTue1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusMainState to value 1 of JSON sensors_statusMainState
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount11 to value 0 of JSON sensors_parameterErrorCount11
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputRoomTemperature to value 22.3 of JSON sensors_inputRoomTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputCover to value 1 of JSON sensors_inputCover
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount1 to value 0 of JSON sensors_parameterErrorCount1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputCurrentStage to value 74 of JSON sensors_inputCurrentStage
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_debug3 to value 0 of JSON controls_debug3
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputPressureSwitch to value 0 of JSON sensors_inputPressureSwitch
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputUpperTemperatureLimiter to value 1 of JSON sensors_inputUpperTemperatureLimiter
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterPressureSensorOffset to value 0 of JSON sensors_parameterPressureSensorOffset
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_frostProtectionActive to value 0 of JSON controls_frostProtectionActive
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputIDFan to value 0 of JSON sensors_outputIDFan
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount3 to value 0 of JSON sensors_parameterErrorCount3
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterEcoModePossible to value 0 of JSON sensors_parameterEcoModePossible
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputDischargeMotor to value 0 of JSON sensors_outputDischargeMotor
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_targetTemperature to value 20 of JSON controls_targetTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount0 to value 1 of JSON sensors_parameterErrorCount0
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterDebug4 to value 0 of JSON sensors_parameterDebug4
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusWifiStrength to value -47 of JSON sensors_statusWifiStrength
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterOnOffCycleCount to value 55 of JSON sensors_parameterOnOffCycleCount
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputFlueGasFlapSwitch to value 1 of JSON sensors_inputFlueGasFlapSwitch
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterLanguageNumber to value 1 of JSON sensors_parameterLanguageNumber
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusWarning to value 0 of JSON sensors_statusWarning
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_insertionMotor to value 0 of JSON stoveFeatures_insertionMotor
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusFrostStarted to value 0 of JSON sensors_statusFrostStarted
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeMon1 to value 06300900 of JSON controls_heatingTimeMon1
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_logRuntime to value 0 of JSON stoveFeatures_logRuntime
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount14 to value 0 of JSON sensors_parameterErrorCount14
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount7 to value 0 of JSON sensors_parameterErrorCount7
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputCurrentStagePID to value 74 of JSON sensors_inputCurrentStagePID
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusHeatingTimesNotProgrammed to value 0 of JSON sensors_statusHeatingTimesNotProgrammed
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan1Level to value 0 of JSON controls_convectionFan1Level
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionWiFiBootLoader to value 101 of JSON sensors_parameterVersionWiFiBootLoader
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan2Level to value 0 of JSON controls_convectionFan2Level
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusSubState to value 3 of JSON sensors_statusSubState
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterDebug3 to value 0 of JSON sensors_parameterDebug3
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount2 to value 0 of JSON sensors_parameterErrorCount2
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeTue2 to value 00000000 of JSON controls_heatingTimeTue2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputIDFanTarget to value 0 of JSON sensors_outputIDFanTarget
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterFeedRateTotal to value 10388 of JSON sensors_parameterFeedRateTotal
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionTFTBootLoader to value 150 of JSON sensors_parameterVersionTFTBootLoader
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan1Active to value 0 of JSON controls_convectionFan1Active
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_RoomPowerRequest to value 4 of JSON controls_RoomPowerRequest
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeWed1 to value 06300900 of JSON controls_heatingTimeWed1
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_convectionFan1Area to value 0 of JSON controls_convectionFan1Area
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputBakeTemperature to value 1024 of JSON sensors_inputBakeTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount9 to value 0 of JSON sensors_parameterErrorCount9
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_debug0 to value 0 of JSON controls_debug0
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionMainBoardBootLoader to value 160 of JSON sensors_parameterVersionMainBoardBootLoader
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterFabricationNumber to value 1 of JSON sensors_parameterFabricationNumber
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_statusError to value 0 of JSON sensors_statusError
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_bakeTemperature to value 340 of JSON controls_bakeTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputExternalRequest to value 1 of JSON sensors_inputExternalRequest
2021.09.10 19:11:51 5: Ofen: Read sets reading lastSeenMinutes to value 0 of JSON lastSeenMinutes
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionTFTSub to value 42901 of JSON sensors_parameterVersionTFTSub
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterStoveTypeNumber to value 13 of JSON sensors_parameterStoveTypeNumber
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_temperatureOffset to value 0.5 of JSON controls_temperatureOffset
2021.09.10 19:11:51 5: Ofen: Read sets reading lastConfirmedRevision to value 1631256516 of JSON lastConfirmedRevision
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_multiAir1 to value 1 of JSON stoveFeatures_multiAir1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_inputGridContact to value 1 of JSON sensors_inputGridContact
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveID to value 25964745 of JSON stoveID
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingPower to value 70 of JSON controls_heatingPower
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeSat2 to value 00000000 of JSON controls_heatingTimeSat2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterCleanIntervalBig to value 360 of JSON sensors_parameterCleanIntervalBig
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveType to value DOMO MultiAir of JSON stoveType
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputIgnition to value 0 of JSON sensors_outputIgnition
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeSun2 to value 00000000 of JSON controls_heatingTimeSun2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputBurnBackFlapMagnet to value 0 of JSON sensors_outputBurnBackFlapMagnet
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount18 to value 0 of JSON sensors_parameterErrorCount18
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount8 to value 0 of JSON sensors_parameterErrorCount8
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_setBackTemperature to value 12 of JSON controls_setBackTemperature
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount19 to value 0 of JSON sensors_parameterErrorCount19
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterKgTillCleaning to value 700 of JSON sensors_parameterKgTillCleaning
2021.09.10 19:11:51 5: Ofen: Read sets reading stoveFeatures_airFlaps to value 0 of JSON stoveFeatures_airFlaps
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount13 to value 0 of JSON sensors_parameterErrorCount13
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterVersionMainBoardSub to value 44501 of JSON sensors_parameterVersionMainBoardSub
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterErrorCount10 to value 0 of JSON sensors_parameterErrorCount10
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterServiceCountdownTime to value 0 of JSON sensors_parameterServiceCountdownTime
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_ecoMode to value 0 of JSON controls_ecoMode
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputGridMotor to value 0 of JSON sensors_outputGridMotor
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeThu1 to value 06300900 of JSON controls_heatingTimeThu1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterSpiralMotorsTuning to value 0 of JSON sensors_parameterSpiralMotorsTuning
2021.09.10 19:11:51 5: Ofen: Read sets reading controls_heatingTimeFri1 to value 06300900 of JSON controls_heatingTimeFri1
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_parameterDebug2 to value 0 of JSON sensors_parameterDebug2
2021.09.10 19:11:51 5: Ofen: Read sets reading sensors_outputAirFlapsTargetPosition to value 0 of JSON sensors_outputAirFlapsTargetPosition
2021.09.10 19:11:51 5: Ofen: Read starts parsing response to update with defined readings: 01,02,03,04,05,06,07,08,10
2021.09.10 19:11:51 5: Ofen: ExtractReading RaumTemp with json sensors_inputRoomTemperature ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading01-1 sets RaumTemp to 22.3
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 32322e33
2021.09.10 19:11:51 5: Ofen: ExtractReading Absenkung with json controls_setBackTemperature ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading02-1 sets Absenkung to 12
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 3132
2021.09.10 19:11:51 5: Ofen: ExtractReading Frostschutz with json controls_frostProtectionTemperature ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading03-1 sets Frostschutz to 4
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 34
2021.09.10 19:11:51 5: Ofen: ExtractReading SollTemp with json controls_targetTemperature ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading04-1 sets SollTemp to 20
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 3230
2021.09.10 19:11:51 5: Ofen: ExtractReading Betriebsart with json controls_operatingMode ...
2021.09.10 19:11:51 5: Ofen: MapConvert called from FormatReading converted 2 (2) to K with map 0:M, 1:A, 2:K
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading05-1 sets Betriebsart to K
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 4b
2021.09.10 19:11:51 5: Ofen: ExtractReading BrennTemp with json sensors_inputFlameTemperature ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading06-1 sets BrennTemp to 22
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 3232
2021.09.10 19:11:51 5: Ofen: ExtractReading Pellets with json sensors_parameterFeedRateTotal ...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading07-1 sets Pellets to 10388
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 3130333838
2021.09.10 19:11:51 5: Ofen: ExtractReading Ofen with json controls_onOff ...
2021.09.10 19:11:51 3: Ofen: MapConvert called from FormatReading did not find 1 (1) in map true:On, false:Off
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading08-1 sets Ofen to 1
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 31
2021.09.10 19:11:51 5: Ofen: ExtractReading controlsJSON with regex /(?^:(?s)controls.*?({.*?}))/...
2021.09.10 19:11:51 5: Ofen: ExtractReading for reading10-1 sets controlsJSON to {"revision":1631256516,"onOff":true,"operatingMode":2,"heatingPower":70,"targetTemperature":"20","bakeTemperature":"340","ecoMode":false,"heatingTimeMon1":"06300900","heatingTimeMon2":"00000000","heatingTimeTue1":"06300900","heatingTimeTue2":"00000000","heatingTimeWed1":"06300900","heatingTimeWed2":"00000000","heatingTimeThu1":"06300900","heatingTimeThu2":"00000000","heatingTimeFri1":"06300900","heatingTimeFri2":"00000000","heatingTimeSat1":"06300900","heatingTimeSat2":"00000000","heatingTimeSun1":"06300900","heatingTimeSun2":"00000000","heatingTimesActiveForComfort":true,"setBackTemperature":"12","convectionFan1Active":false,"convectionFan1Level":0,"convectionFan1Area":0,"convectionFan2Active":false,"convectionFan2Level":0,"convectionFan2Area":0,"frostProtectionActive":false,"frostProtectionTemperature":"4","temperatureOffset":"0.5","RoomPowerRequest":4,"debug0":0,"debug1":0,"debug2":0,"debug3":0,"debug4":0}
2021.09.10 19:11:51 5: Ofen: ExtractReading value as hex is 7b227265766973696f6e223a313633313235363531362c226f6e4f6666223a747275652c226f7065726174696e674d6f6465223a322c2268656174696e67506f776572223a37302c2274617267657454656d7065726174757265223a223230222c2262616b6554656d7065726174757265223a22333430222c2265636f4d6f6465223a66616c73652c2268656174696e6754696d654d6f6e31223a223036333030393030222c2268656174696e6754696d654d6f6e32223a223030303030303030222c2268656174696e6754696d6554756531223a223036333030393030222c2268656174696e6754696d6554756532223a223030303030303030222c2268656174696e6754696d6557656431223a223036333030393030222c2268656174696e6754696d6557656432223a223030303030303030222c2268656174696e6754696d6554687531223a223036333030393030222c2268656174696e6754696d6554687532223a223030303030303030222c2268656174696e6754696d6546726931223a223036333030393030222c2268656174696e6754696d6546726932223a223030303030303030222c2268656174696e6754696d6553617431223a223036333030393030222c2268656174696e6754696d6553617432223a223030303030303030222c2268656174696e6754696d6553756e31223a223036333030393030222c2268656174696e6754696d6553756e32223a223030303030303030222c2268656174696e6754696d6573416374697665466f72436f6d666f7274223a747275652c227365744261636b54656d7065726174757265223a223132222c22636f6e76656374696f6e46616e31416374697665223a66616c73652c22636f6e76656374696f6e46616e314c6576656c223a302c22636f6e76656374696f6e46616e3141726561223a302c22636f6e76656374696f6e46616e32416374697665223a66616c73652c22636f6e76656374696f6e46616e324c6576656c223a302c22636f6e76656374696f6e46616e3241726561223a302c2266726f737450726f74656374696f6e416374697665223a66616c73652c2266726f737450726f74656374696f6e54656d7065726174757265223a2234222c2274656d70657261747572654f6666736574223a22302e35222c22526f6f6d506f77657252657175657374223a342c22646562756730223a302c22646562756731223a302c22646562756732223a302c22646562756733223a302c22646562756734223a307d
2021.09.10 19:11:51 4: Ofen: Read response matched 147, unmatch 0 Reading(s)
2021.09.10 19:11:51 5: Ofen: Read response to update matched controls_convectionFan2Active sensors_parameterFlameSensorOffset sensors_outputAirFlaps sensors_inputBoardTemperature name sensors_parameterIDFanTuning sensors_parameterVersionWiFiSub sensors_inputPressureSensor controls_revision sensors_inputTargetStagePID sensors_parameterVersionTFT sensors_parameterRuntimePellets sensors_outputInsertionMotor controls_debug4 controls_operatingMode sensors_parameterVersionMainBoard controls_onOff controls_heatingTimeSun1 sensors_parameterErrorCount15 sensors_statusSubError sensors_outputInsertionCurrent controls_convectionFan2Area controls_heatingTimeSat1 controls_debug2 stoveFeatures_bakeMode sensors_parameterIgnitionCount sensors_inputFlameTemperature sensors_outputDischargeCurrent controls_frostProtectionTemperature controls_heatingTimeThu2 sensors_parameterErrorCount17 controls_heatingTimeFri2 sensors_parameterRuntimeLogs oem sensors_parameterErrorCount4 sensors_parameterServiceCountdownKg controls_heatingTimeMon2 sensors_inputBurnBackFlapSwitch sensors_parameterErrorCount16 sensors_statusService sensors_parameterErrorCount6 controls_debug1 controls_heatingTimesActiveForComfort sensors_parameterDebug1 sensors_inputDoor sensors_parameterDebug0 sensors_parameterVersionWiFi sensors_parameterErrorCount12 sensors_parameterErrorCount5 sensors_parameterFeedRateService controls_heatingTimeWed2 stoveFeatures_multiAir2 controls_heatingTimeTue1 sensors_statusMainState sensors_parameterErrorCount11 sensors_inputRoomTemperature sensors_inputCover sensors_parameterErrorCount1 sensors_inputCurrentStage controls_debug3 sensors_inputPressureSwitch sensors_inputUpperTemperatureLimiter sensors_parameterPressureSensorOffset controls_frostProtectionActive sensors_outputIDFan sensors_parameterErrorCount3 sensors_parameterEcoModePossible sensors_outputDischargeMotor controls_targetTemperature sensors_parameterErrorCount0 sensors_parameterDebug4 sensors_statusWifiStrength sensors_parameterOnOffCycleCount sensors_inputFlueGasFlapSwitch sensors_parameterLanguageNumber sensors_statusWarning stoveFeatures_insertionMotor sensors_statusFrostStarted controls_heatingTimeMon1 stoveFeatures_logRuntime sensors_parameterErrorCount14 sensors_parameterErrorCount7 sensors_inputCurrentStagePID sensors_statusHeatingTimesNotProgrammed controls_convectionFan1Level sensors_parameterVersionWiFiBootLoader controls_convectionFan2Level sensors_statusSubState sensors_parameterDebug3 sensors_parameterErrorCount2 controls_heatingTimeTue2 sensors_outputIDFanTarget sensors_parameterFeedRateTotal sensors_parameterVersionTFTBootLoader controls_convectionFan1Active controls_RoomPowerRequest controls_heatingTimeWed1 controls_convectionFan1Area sensors_inputBakeTemperature sensors_parameterErrorCount9 controls_debug0 sensors_parameterVersionMainBoardBootLoader sensors_parameterFabricationNumber sensors_statusError controls_bakeTemperature sensors_inputExternalRequest lastSeenMinutes sensors_parameterVersionTFTSub sensors_parameterStoveTypeNumber controls_temperatureOffset lastConfirmedRevision stoveFeatures_multiAir1 sensors_inputGridContact stoveID controls_heatingPower controls_heatingTimeSat2 sensors_parameterCleanIntervalBig stoveType sensors_outputIgnition controls_heatingTimeSun2 sensors_outputBurnBackFlapMagnet sensors_parameterErrorCount18 sensors_parameterErrorCount8 controls_setBackTemperature sensors_parameterErrorCount19 sensors_parameterKgTillCleaning stoveFeatures_airFlaps sensors_parameterErrorCount13 sensors_parameterVersionMainBoardSub sensors_parameterErrorCount10 sensors_parameterServiceCountdownTime controls_ecoMode sensors_outputGridMotor controls_heatingTimeThu1 sensors_parameterSpiralMotorsTuning controls_heatingTimeFri1 sensors_parameterDebug2 sensors_outputAirFlapsTargetPosition RaumTemp Absenkung Frostschutz SollTemp Betriebsart BrennTemp Pellets Ofen controlsJSON
2021.09.10 19:11:51 5: Ofen: HandleSendQueue called from ReadCallback, qlen = 0
2021.09.10 19:11:51 5: Ofen: HandleSendQueue found no usable entry in queue
2021.09.10 19:12:07 1: RMDIR: ./restoreDir/save/2021-09-04
2021.09.10 19:12:32 5: Ofen: set called with targetTemperature 24
2021.09.10 19:12:32 5: Ofen: set found option targetTemperature in attribute set12Name
2021.09.10 19:12:32 4: Ofen: set will now set targetTemperature -> 24
2021.09.10 19:12:32 5: Ofen: AddToQueue adds type set12 to URL https://www.rika-firenet.com/api/client/54156160/controls, data {{data}}, no headers, retry 0, initial queue len: 0
2021.09.10 19:12:32 5: Ofen: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.09.10 19:12:32 5: Ofen: Replace called for type set12, regex (?^:{{data}}), mode expression, value replaceJSON("targetTemperature", 24) input: {{data}}
2021.09.10 19:12:32 3: replaceJSON Internalvalue: 24
2021.09.10 19:12:32 5: Ofen: get called with revision
2021.09.10 19:12:32 5: Ofen: get found option revision in attribute get09Name
2021.09.10 19:12:32 4: Ofen: get will now request revision, no optional value
2021.09.10 19:12:32 5: Ofen: AddToQueue adds type get09 to URL https://www.rika-firenet.com/api/client/54156160/status, no data, no headers, retry 0, initial queue len: 0
2021.09.10 19:12:32 5: Ofen: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.09.10 19:12:32 5: Ofen: StartQueueTimer called from ReadyForSending sets internal timer to process queue in 1.000 seconds, still waiting for reply to last request
2021.09.10 19:12:32 3: get Ofen revision : revision requested, watch readings
2021.09.10 19:12:32 3: replaceJSON configsJSON: {"revision":1631256516,"onOff":true,"operatingMode":2,"heatingPower":70,"targetTemperature":"20","bakeTemperature":"340","ecoMode":false,"heatingTimeMon1":"06300900","heatingTimeMon2":"00000000","heatingTimeTue1":"06300900","heatingTimeTue2":"00000000","heatingTimeWed1":"06300900","heatingTimeWed2":"00000000","heatingTimeThu1":"06300900","heatingTimeThu2":"00000000","heatingTimeFri1":"06300900","heatingTimeFri2":"00000000","heatingTimeSat1":"06300900","heatingTimeSat2":"00000000","heatingTimeSun1":"06300900","heatingTimeSun2":"00000000","heatingTimesActiveForComfort":true,"setBackTemperature":"12","convectionFan1Active":false,"convectionFan1Level":0,"convectionFan1Area":0,"convectionFan2Active":false,"convectionFan2Level":0,"convectionFan2Area":0,"frostProtectionActive":false,"frostProtectionTemperature":"4","temperatureOffset":"0.5","RoomPowerRequest":4,"debug0":0,"debug1":0,"debug2":0,"debug3":0,"debug4":0}
2021.09.10 19:12:32 3: replaceJSON Result: heatingTimeSun2=00000000&heatingTimeSat1=06300900&RoomPowerRequest=4&heatingTimeWed2=00000000&bakeTemperature=340&heatingTimeThu2=00000000&revision=1631256516&heatingPower=70&operatingMode=2&heatingTimeTue1=06300900&heatingTimeFri2=00000000&debug2=0&heatingTimeMon2=00000000&frostProtectionActive=0&onOff=1&heatingTimeSun1=06300900&heatingTimeSat2=00000000&frostProtectionTemperature=4&convectionFan1Area=0&debug1=0&convectionFan2Area=0&heatingTimeWed1=06300900&convectionFan2Level=0&heatingTimeThu1=06300900&convectionFan1Level=0&heatingTimeFri1=06300900&temperatureOffset=0.5&debug0=0&debug4=0&heatingTimeTue2=00000000&ecoMode=0&convectionFan1Active=0&heatingTimeMon1=06300900&heatingTimesActiveForComfort=1&setBackTemperature=12&debug3=0&convectionFan2Active=0&targetTemperature=24
2021.09.10 19:12:32 5: Ofen: Replace: match for type set12, regex (?^:{{data}}), mode expression, value package main; replaceJSON("targetTemperature", 24), input: {{data}}, result is heatingTimeSun2=00000000&heatingTimeSat1=06300900&RoomPowerRequest=4&heatingTimeWed2=00000000&bakeTemperature=340&heatingTimeThu2=00000000&revision=1631256516&heatingPower=70&operatingMode=2&heatingTimeTue1=06300900&heatingTimeFri2=00000000&debug2=0&heatingTimeMon2=00000000&frostProtectionActive=0&onOff=1&heatingTimeSun1=06300900&heatingTimeSat2=00000000&frostProtectionTemperature=4&convectionFan1Area=0&debug1=0&convectionFan2Area=0&heatingTimeWed1=06300900&convectionFan2Level=0&heatingTimeThu1=06300900&convectionFan1Level=0&heatingTimeFri1=06300900&temperatureOffset=0.5&debug0=0&debug4=0&heatingTimeTue2=00000000&ecoMode=0&convectionFan1Active=0&heatingTimeMon1=06300900&heatingTimesActiveForComfort=1&setBackTemperature=12&debug3=0&convectionFan2Active=0&targetTemperature=24
2021.09.10 19:12:32 5: Ofen: Replace called for type set12, regex (?^:{{data}}), mode expression, value replaceJSON("targetTemperature", 24) input: https://www.rika-firenet.com/api/client/54156160/controls
2021.09.10 19:12:32 5: Ofen: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los (key connect.sid;, destination path is /api/client/54156160/controls)
2021.09.10 19:12:32 5: Ofen: DoCookies is adding Cookie header: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:12:32 4: Ofen: HandleSendQueue sends set12 with timeout 120 to https://www.rika-firenet.com/api/client/54156160/controls,
data: heatingTimeSun2=00000000&heatingTimeSat1=06300900&RoomPowerRequest=4&heatingTimeWed2=00000000&bakeTemperature=340&heatingTimeThu2=00000000&revision=1631256516&heatingPower=70&operatingMode=2&heatingTimeTue1=06300900&heatingTimeFri2=00000000&debug2=0&heatingTimeMon2=00000000&frostProtectionActive=0&onOff=1&heatingTimeSun1=06300900&heatingTimeSat2=00000000&frostProtectionTemperature=4&convectionFan1Area=0&debug1=0&convectionFan2Area=0&heatingTimeWed1=06300900&convectionFan2Level=0&heatingTimeThu1=06300900&convectionFan1Level=0&heatingTimeFri1=06300900&temperatureOffset=0.5&debug0=0&debug4=0&heatingTimeTue2=00000000&ecoMode=0&convectionFan1Active=0&heatingTimeMon1=06300900&heatingTimesActiveForComfort=1&setBackTemperature=12&debug3=0&convectionFan2Active=0&targetTemperature=24,
header: Cookie: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:12:32 5: Ofen: ReadCallback called from __ANON__
2021.09.10 19:12:32 4: Ofen: Read callback: request type was set12 retry 0,
header: HTTP/1.1 404 Not Found
Server: Cowboy
Connection: close
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 57
Etag: W/"39-KNdqwoWHXDzSXSXvRRmk21TXwrQ"
Vary: Accept-Encoding
Date: Fri, 10 Sep 2021 17:12:32 GMT
Via: 1.1 vegur, body length 57
2021.09.10 19:12:32 5: Ofen: Read callback: body
Stove 54156160 is not registered for user helmutxyz
2021.09.10 19:12:32 4: Ofen: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2021.09.10 19:12:32 4: Ofen: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Stove 54156160 is no...") at lib/FHEM/HTTPMOD/Utils.pm line 678.

2021.09.10 19:12:32 5: Ofen: GetCookies is looking for Cookies
2021.09.10 19:12:32 5: Ofen: ExtractSid called, context set, num 12
2021.09.10 19:12:32 4: Ofen: checking for redirects, code=404, ignore=0
2021.09.10 19:12:32 4: Ofen: no redirects to handle
2021.09.10 19:12:32 5: Ofen: Read callback sets LAST_REQUEST to set12
2021.09.10 19:12:32 5: Ofen: CheckAuth is checking buffer with ReAuthRegex (?^:id="login"|Unauthorized)
2021.09.10 19:12:32 5: Ofen: CheckAuth decided no authentication required
2021.09.10 19:12:33 5: Ofen: HandleSendQueue called from Fhem internal timer, qlen = 1
2021.09.10 19:12:33 5: Ofen: Replace called for type get09, regex (?^:{{data}}), mode expression, empty value input: https://www.rika-firenet.com/api/client/xyz/status
2021.09.10 19:12:33 5: Ofen: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los (key connect.sid;, destination path is /api/client/54156160/status)
2021.09.10 19:12:33 5: Ofen: DoCookies is adding Cookie header: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:12:33 4: Ofen: HandleSendQueue sends get09 with timeout 120 to https://www.rika-firenet.com/api/client/54156160/status, No Data,
header: Cookie: connect.sid=s%3AnOHtNAzsJNvham0jsYfBrUTk_-eRr4m2.5eHFRniWj7KBCmDdmdXlyDhYw9ERUTe%2BiRK6H3y9Los
2021.09.10 19:12:33 5: Ofen: ReadCallback called from __ANON__
2021.09.10 19:12:33 4: Ofen: Read callback: request type was get09 retry 0,
header: HTTP/1.1 500 Internal Server Error
Server: Cowboy
Connection: close
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 57
Etag: W/"39-KNdqwoWHXDzSXSXvRRmk21TXwrQ"
Vary: Accept-Encoding
Date: Fri, 10 Sep 2021 17:12:33 GMT
Via: 1.1 vegur, body length 57
2021.09.10 19:12:33 5: Ofen: Read callback: body
Stove 54156160 is not registered for user helmut@xyz
2021.09.10 19:12:33 4: Ofen: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2021.09.10 19:12:33 4: Ofen: error while parsing JSON data: malformed JSON string, neither tag, array, object, number, string or atom, at character offset 0 (before "Stove 54156160 is no...") at lib/FHEM/HTTPMOD/Utils.pm line 678.

2021.09.10 19:12:33 5: Ofen: GetCookies is looking for Cookies
2021.09.10 19:12:33 5: Ofen: ExtractSid called, context get, num 09
2021.09.10 19:12:33 4: Ofen: checking for redirects, code=500, ignore=0
2021.09.10 19:12:33 4: Ofen: no redirects to handle
2021.09.10 19:12:33 5: Ofen: Read callback sets LAST_REQUEST to get09
2021.09.10 19:12:33 5: Ofen: CheckAuth is checking buffer with ReAuthRegex (?^:id="login"|Unauthorized)
2021.09.10 19:12:33 5: Ofen: CheckAuth decided no authentication required
2021.09.10 19:12:33 5: Ofen: ExtractReading for context get, num 09 - no individual parse definition
2021.09.10 19:12:33 3: Ofen: no parsed JSON structure available
2021.09.10 19:12:33 5: Ofen: Read starts parsing response to get09 with defined readings: 01,02,03,04,05,06,07,08,10
2021.09.10 19:12:33 5: Ofen: ExtractReading RaumTemp with json sensors_inputRoomTemperature ...
2021.09.10 19:12:33 5: Ofen: ExtractReading RaumTemp did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading Absenkung with json controls_setBackTemperature ...
2021.09.10 19:12:33 5: Ofen: ExtractReading Absenkung did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading Frostschutz with json controls_frostProtectionTemperature ...
2021.09.10 19:12:33 5: Ofen: ExtractReading Frostschutz did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading SollTemp with json controls_targetTemperature ...
2021.09.10 19:12:33 5: Ofen: ExtractReading SollTemp did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading Betriebsart with json controls_operatingMode ...
2021.09.10 19:12:33 5: Ofen: ExtractReading Betriebsart did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading BrennTemp with json sensors_inputFlameTemperature ...
2021.09.10 19:12:33 5: Ofen: ExtractReading BrennTemp did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading Pellets with json sensors_parameterFeedRateTotal ...
2021.09.10 19:12:33 5: Ofen: ExtractReading Pellets did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading Ofen with json controls_onOff ...
2021.09.10 19:12:33 5: Ofen: ExtractReading Ofen did not match
2021.09.10 19:12:33 5: Ofen: ExtractReading controlsJSON with regex /(?^:(?s)controls.*?({.*?}))/...
2021.09.10 19:12:33 5: Ofen: ExtractReading controlsJSON did not match
2021.09.10 19:12:33 4: Ofen: Read response to get09 didn't match any Reading
2021.09.10 19:12:33 5: Ofen: HandleSendQueue called from ReadCallback, qlen = 0
2021.09.10 19:12:33 5: Ofen: HandleSendQueue found no usable entry in queue

jump to the top




Danke
helmut
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 10 September 2021, 21:15:37
Hallo Helmut,

wie sieht denn die Funktion replaceJSON aus, die Du in der replacement-Expression verwedest?
Erzeugst Du darin einen get-Aufruf?
Oder wo kommt get revision her?
Zitat
2021.09.10 19:12:32 5: Ofen: get called with revision

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Helmi55 am 10 September 2021, 21:47:03
Hi Stefan

Sorry das kann ich leider nicht beantworten

Mir wurde vor Jahren hier geholfen.  Das Ganze ist eine Nummer zu groß für mich  8)
Ich bin auf deine/eure Hilfe angewiesen.
Ich möchte aber, wenn es funktioniert alles analysieren und versuchen zu verstehen

Danke Helmut
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 September 2021, 12:06:35
Hallo Helmut,

ich kennen leider den Ofen und sein API nicht. amenomade hat sich da ja schon mal ausführlicher damit beschäftigt und kann vermutlich besser helfen.

Hat das ganze denn in den letzten Jahren funktioniert?
Falls ja, geht es seit einem Update von HTTPMOD nicht mehr oder hat der Hersteller des Ofens etwas geändert?

Zwei Dinge fallen mir aber auf:

1) In Deiner 99_myUtils.pm hast Du offenbar die Funktion replaceJSON definiert und darin wird ein get-Befehl zum Abfragen der Revision erzeugt. Nur wir dieser Request hinten angehängt und erst beantwortet, wenn der Request für den Set-Befehl schon raus ist. Die Antwort kommt also zu spät falls Revison nicht schon vorher bekannt war.
Falls sich der Wert von Revision häufig ändert, würde ich den beim Login abfragen und einen neuen Login starten falls nötig.

2) Beim Set enthält die URL eine Nummer und als Antwort auf den Request bekommst Du die Fehlermeldung
Zitat
Stove 54156160 is not registered for user helmut@xyz

Wo kommt die Nummer denn her? Warum ist die falsch?
Mir fehlt leider die Zeit um das alles selbst auszuprobieren. Funktioniert das ganze denn bei anderen Besitzern dieses Ofens?

Was mir auch noch unklar ist, ist die Sache mit replaceJSON. vielleicht liest ja jemand mit, der das durchschaut hat. Warum kann man nicht einfach eine Textersetzung machen bzw. warum ist decode_json nötig?
Eventuell kann ich da ja eine Kleinigkeit in HTTPMOD ergänzen, damit sowas nicht notwendig ist?

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Helmi55 am 11 September 2021, 16:40:00
servus
seit wann es nicht funktioniert (HTTPMOD Änderung oder SW vom Ofen )
kann ich leider nicht beantworten da ich eigentlich bislang nur die "readings" verwendet habe und nichts wirklich gesendet habe.....
Diese controls_revision
   
1631345686
kann ich mir auch nicht erklären denn die StoveID ist 259xxxxxx

Wie gesagt die Pelletsfüllmenge stimmt genau - der Empfang passt.

Gruß
Helmut
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 September 2021, 19:49:01
Hallo Helmut,

das Problem ist dass man sich den Ablauf der Authentisierung und Session-Verwaltung des Ofens Schritt für Schritt mit einem Proxy wie der Burp-Suite ansehen muss um das dann in HTTPMOD nachbilden zu können. Sobald der Hersteller sein Verfahren ändert (z.B. bei einem Update), kann es sein dass man von Vorne anfangen muss. Das Abfragen / Lesen von Daten kann dabei ganz anders ablaufen als das Schreiben von Daten.
Du müsstest Dich also ausführlich mit HTTP und Werkzeugen wie der Burp-Suite beschäftigen oder jemanden finden, der die Zeit hat das mit Deinem Ofen für Dich zu machen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Helmi55 am 21 September 2021, 09:10:28
Hallo Stefan
Danke für deine Mühe. Bin gestern auf den Fehler draufgekommen.
Das Problem sitzt vor dem Bildschirm.......
ich habe die StoveID hier
https://forum.fhem.de/index.php/topic,76220.msg1175708.html#msg1175708
falsch eingegeben.
Muss beim Neuaufsetzen des Systems mit copy paste passiert sein.

Aber auf jeden Fall muss ich mich mit Burp beschäftigen denn man weiß ja nie was RIKA so einfällt.

Schönen Tag
Helmut
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 21 Oktober 2021, 22:53:40
@StefanStrobel

Nabend,
kann ich auf ein set ein automatisches reread einstellen?
Super wäre noch eine einstellbare Verzögerung wie bei dem Standardsetup.

Gruß schwatter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 22 Oktober 2021, 12:11:17
Zitat von: schwatter am 21 Oktober 2021, 22:53:40
@StefanStrobel

Nabend,
kann ich auf ein set ein automatisches reread einstellen?
Super wäre noch eine einstellbare Verzögerung wie bei dem Standardsetup.

Gruß schwatter
Du kannst folgendes verwenden

set[nnnn]FollowGet <Name des get>

Das wartet jedoch nur, bis das set fertig ist.

VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 22 Oktober 2021, 17:52:31
Danke,
mal sehen ob das zu meinem Setup passt. Problem bei mir ist,
ich nutze kein get. Die Readings werden per json und interval aktualisiert.

Gruß schwatter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 23 Oktober 2021, 11:39:19
@ch.eick

Es war doch für mich der richtige Tip.
Nachdem ich jetzt die Url für Json einfach nochmal per get01URL und get01Name hinzugefügt habe und dann jedes set einfach per "set[xxxxx]FollowGet <Name des get>" erweiterte, funktioniert es wie gewünscht.

Danke!

Gruß schwatter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 23 Oktober 2021, 15:39:09
Zitat von: schwatter am 23 Oktober 2021, 11:39:19
Es war doch für mich der richtige Tip.
Nachdem ich jetzt die Url für Json einfach nochmal per get01URL und get01Name hinzugefügt habe und dann jedes set einfach per "set[xxxxx]FollowGet <Name des get>" erweiterte, funktioniert es wie gewünscht.
Schön, das es klappt :-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 14 November 2021, 00:32:30
@StefanStrobel

Ich habe per widgetOverride einen Colorpicker hinzugefügt.
Damit möchte ich einen Farbcode senden.

option_moodlamp_hex:colorpicker,RGB

Leider meckert HTTPMOD.

set value 45FF30 is not numeric

Gibt es eine Möglichkeit Hexdecimal zu senden?


Gruß schwatter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: perseusarm am 16 November 2021, 08:59:27
Guten Morgen,

so, jetzt hat mich das bodyDecode auch erwischt.

Ich habe eine Oekofen Pelletheizung die mir den JSON ohne charset im Header ausgibt.
Im Log hab ich dann folgendes:

2021.11.16 08:55:02 4: Pellematic: BodyDecode is not decoding the response body (charset header not found, bodyDecode set to auto)
2021.11.16 08:55:02 4: Pellematic: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 92 (before "\x{fffd}C", "factor"...") at lib/FHEM/HTTPMOD/Utils.pm line 678.

2021.11.16 08:55:02 5: Pellematic: GetCookies is looking for Cookies
2021.11.16 08:55:02 5: Pellematic: ExtractSid called, context get, num 01
2021.11.16 08:55:02 4: Pellematic: checking for redirects, code=200, ignore=0
2021.11.16 08:55:02 4: Pellematic: no redirects to handle
2021.11.16 08:55:02 5: Pellematic: Read callback sets LAST_REQUEST to get01
2021.11.16 08:55:02 5: Pellematic: CheckAuth decided no authentication required
2021.11.16 08:55:02 5: Pellematic: ExtractReading Atemp with json $.hk1.L_statetext ...
2021.11.16 08:55:02 5: Pellematic: ExtractReading Atemp did not match
2021.11.16 08:55:02 4: Pellematic: Read response to get01 didn't match any Reading
2021.11.16 08:55:02 5: Pellematic: HandleSendQueue called from ReadCallback, qlen = 0
2021.11.16 08:55:02 5: Pellematic: HandleSendQueue found no usable entry in queue


Ich habe diverse bodyDecodes ausprobiert (none, auto, utf8, cp850, latin1). Aber immer der gleiche Fehler.
Hat jemand einen Tipp wie ich das korrekt decodieren kann?

Vielen Dank

Gruß
Sascha

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 16 November 2021, 22:18:08
Zitat von: schwatter am 14 November 2021, 00:32:30
@StefanStrobel

Ich habe per widgetOverride einen Colorpicker hinzugefügt.
Damit möchte ich einen Farbcode senden.

option_moodlamp_hex:colorpicker,RGB

Leider meckert HTTPMOD.

set value 45FF30 is not numeric

Gibt es eine Möglichkeit Hexdecimal zu senden?


Gruß schwatter

ok, gelöst.

@stefanru hat mir gerade den Hinweis gegeben, das ich auf TextArg umstellen muss. Jetzt funktioniert senden von Hexdezimal.


Gruß schwatter
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 21 November 2021, 14:57:45
Moin Moin,

ich habe eine Frage zu HTTPMOD... ich habe folgendes Device mit HTTPMOD erzeugt:

Internals:
   BUSY       0
   DEF        none 600
   FUUID      5df9ff86-f33f-0804-1db2-f03fb7efb573da15
   Interval   600
   MainURL   
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       HomeTouch
   NOTIFYDEV  global
   NR         403
   NTFY_ORDER 50-HomeTouch
   STATE      SUCCESS
   STILLDONETIME 0
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://Merten-Home-Touch:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://Merten-Home-Touch/ocf/wlan0
     header     Content-Type: application/json
     host       Merten-Home-Touch
     httpheader HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Sun, 21 Nov 2021 12:59:57 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
     httpversion 1.1
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /ocf/wlan0
     protocol   http
     redirects  0
     timeout    2
     url        http://Merten-Home-Touch/ocf/wlan0
     sslargs:
   QUEUE:
   READINGS:
     2021-11-21 13:59:57   HomeTouch_STATE SUCCESS
     2021-11-21 13:59:52   Taster_OpenLevel-1 100
     2021-11-21 13:59:52   Taster_OpenLevel-10 100
     2021-11-21 13:59:52   Taster_OpenLevel-11 100
     2021-11-21 13:59:52   Taster_OpenLevel-12 20
     2021-11-21 13:59:52   Taster_OpenLevel-13 100
     2021-11-21 13:59:52   Taster_OpenLevel-14 100
     2021-11-21 13:59:52   Taster_OpenLevel-2 100
     2021-11-21 13:59:52   Taster_OpenLevel-3 100
     2021-11-21 13:59:52   Taster_OpenLevel-4 100
     2021-11-21 13:59:52   Taster_OpenLevel-5 100
     2021-11-21 13:59:52   Taster_OpenLevel-6 100
     2021-11-21 13:59:52   Taster_OpenLevel-7 100
     2021-11-21 13:59:52   Taster_OpenLevel-8 100
     2021-11-21 13:59:52   Taster_OpenLevel-9 100
     2021-03-28 12:29:16   Taster_URL      http://192.168.178.128/ocf/wlss97/shutter/1
     2021-11-21 13:59:51   Taster_WiserLink-1 wlss31
     2021-11-21 13:59:51   Taster_WiserLink-10 wlss68
     2021-11-21 13:59:51   Taster_WiserLink-11 wlss70
     2021-11-21 13:59:51   Taster_WiserLink-12 wlss97
     2021-11-21 13:59:51   Taster_WiserLink-13 wlss99
     2021-11-21 13:59:51   Taster_WiserLink-14 wlss102
     2021-11-21 13:59:51   Taster_WiserLink-2 wlss32
     2021-11-21 13:59:51   Taster_WiserLink-3 wlss37
     2021-11-21 13:59:51   Taster_WiserLink-4 wlss39
     2021-11-21 13:59:51   Taster_WiserLink-5 wlss42
     2021-11-21 13:59:51   Taster_WiserLink-6 wlss44
     2021-11-21 13:59:51   Taster_WiserLink-7 wlss47
     2021-11-21 13:59:51   Taster_WiserLink-8 wlss49
     2021-11-21 13:59:51   Taster_WiserLink-9 wlss51
     2021-11-21 13:59:54   Taster_WiserName-1 Rollladen 2
     2021-11-21 13:59:54   Taster_WiserName-10 Rollladen 1
     2021-11-21 13:59:54   Taster_WiserName-11 Rollladen 2
     2021-11-21 13:59:54   Taster_WiserName-12 Terrasse
     2021-11-21 13:59:54   Taster_WiserName-13 Rollladen 2
     2021-11-21 13:59:54   Taster_WiserName-14 Rollladen
     2021-11-21 13:59:54   Taster_WiserName-2 Kueche
     2021-11-21 13:59:54   Taster_WiserName-3 Rollladen 1
     2021-11-21 13:59:54   Taster_WiserName-4 Rollladen
     2021-11-21 13:59:54   Taster_WiserName-5 Rollladen 1
     2021-11-21 13:59:54   Taster_WiserName-6 Rollladen 2
     2021-11-21 13:59:54   Taster_WiserName-7 Rollladen 1
     2021-11-21 13:59:54   Taster_WiserName-8 Rollladen 2
     2021-11-21 13:59:54   Taster_WiserName-9 Rollladen 1
     2021-11-21 13:59:53   Taster_WiserRoom-1 17_WZ
     2021-11-21 13:59:53   Taster_WiserRoom-10 09_KZ
     2021-11-21 13:59:53   Taster_WiserRoom-11 09_KZ
     2021-11-21 13:59:53   Taster_WiserRoom-12 17_WZ
     2021-11-21 13:59:53   Taster_WiserRoom-13 09_Gaestezimmer
     2021-11-21 13:59:53   Taster_WiserRoom-14 04_Bad_Oben
     2021-11-21 13:59:53   Taster_WiserRoom-2 17_WZ
     2021-11-21 13:59:53   Taster_WiserRoom-3 17_WZ
     2021-11-21 13:59:53   Taster_WiserRoom-4 04_Bad_Unten
     2021-11-21 13:59:53   Taster_WiserRoom-5 23_Buero
     2021-11-21 13:59:53   Taster_WiserRoom-6 23_Buero
     2021-11-21 13:59:53   Taster_WiserRoom-7 06_SZ
     2021-11-21 13:59:53   Taster_WiserRoom-8 06_SZ
     2021-11-21 13:59:53   Taster_WiserRoom-9 09_Gaestezimmer
     2021-11-21 13:59:55   globaleSzenen   Home Away Sleep
     2021-11-21 13:59:56   lokaleSzenen    Bad_OG_down,Bad_OG_up,WZ_down,WZ_up,Buero_down,Buero_up,GZ_down,GZ_up,KZ_down,KZ_up,SZ_down,SZ_up
   REQUEST:
     context    get
     data       
     header     Content-Type: application/json
     ignoreredirects 0
     num        07
     retryCount 0
     type       get07
     url        http://Merten-Home-Touch/ocf/wlan0
   defptr:
     readingBase:
       HomeTouch_STATE get
       Taster_OpenLevel-1 get
       Taster_OpenLevel-10 get
       Taster_OpenLevel-11 get
       Taster_OpenLevel-12 get
       Taster_OpenLevel-13 get
       Taster_OpenLevel-14 get
       Taster_OpenLevel-2 get
       Taster_OpenLevel-3 get
       Taster_OpenLevel-4 get
       Taster_OpenLevel-5 get
       Taster_OpenLevel-6 get
       Taster_OpenLevel-7 get
       Taster_OpenLevel-8 get
       Taster_OpenLevel-9 get
       Taster_WiserLink-1 get
       Taster_WiserLink-10 get
       Taster_WiserLink-11 get
       Taster_WiserLink-12 get
       Taster_WiserLink-13 get
       Taster_WiserLink-14 get
       Taster_WiserLink-2 get
       Taster_WiserLink-3 get
       Taster_WiserLink-4 get
       Taster_WiserLink-5 get
       Taster_WiserLink-6 get
       Taster_WiserLink-7 get
       Taster_WiserLink-8 get
       Taster_WiserLink-9 get
       Taster_WiserName-1 get
       Taster_WiserName-10 get
       Taster_WiserName-11 get
       Taster_WiserName-12 get
       Taster_WiserName-13 get
       Taster_WiserName-14 get
       Taster_WiserName-2 get
       Taster_WiserName-3 get
       Taster_WiserName-4 get
       Taster_WiserName-5 get
       Taster_WiserName-6 get
       Taster_WiserName-7 get
       Taster_WiserName-8 get
       Taster_WiserName-9 get
       Taster_WiserRoom-1 get
       Taster_WiserRoom-10 get
       Taster_WiserRoom-11 get
       Taster_WiserRoom-12 get
       Taster_WiserRoom-13 get
       Taster_WiserRoom-14 get
       Taster_WiserRoom-2 get
       Taster_WiserRoom-3 get
       Taster_WiserRoom-4 get
       Taster_WiserRoom-5 get
       Taster_WiserRoom-6 get
       Taster_WiserRoom-7 get
       Taster_WiserRoom-8 get
       Taster_WiserRoom-9 get
       globaleSzenen get
       lokaleSzenen get
     readingNum:
       HomeTouch_STATE 07
       Taster_OpenLevel-1 02
       Taster_OpenLevel-10 02
       Taster_OpenLevel-11 02
       Taster_OpenLevel-12 02
       Taster_OpenLevel-13 02
       Taster_OpenLevel-14 02
       Taster_OpenLevel-2 02
       Taster_OpenLevel-3 02
       Taster_OpenLevel-4 02
       Taster_OpenLevel-5 02
       Taster_OpenLevel-6 02
       Taster_OpenLevel-7 02
       Taster_OpenLevel-8 02
       Taster_OpenLevel-9 02
       Taster_WiserLink-1 01
       Taster_WiserLink-10 01
       Taster_WiserLink-11 01
       Taster_WiserLink-12 01
       Taster_WiserLink-13 01
       Taster_WiserLink-14 01
       Taster_WiserLink-2 01
       Taster_WiserLink-3 01
       Taster_WiserLink-4 01
       Taster_WiserLink-5 01
       Taster_WiserLink-6 01
       Taster_WiserLink-7 01
       Taster_WiserLink-8 01
       Taster_WiserLink-9 01
       Taster_WiserName-1 04
       Taster_WiserName-10 04
       Taster_WiserName-11 04
       Taster_WiserName-12 04
       Taster_WiserName-13 04
       Taster_WiserName-14 04
       Taster_WiserName-2 04
       Taster_WiserName-3 04
       Taster_WiserName-4 04
       Taster_WiserName-5 04
       Taster_WiserName-6 04
       Taster_WiserName-7 04
       Taster_WiserName-8 04
       Taster_WiserName-9 04
       Taster_WiserRoom-1 03
       Taster_WiserRoom-10 03
       Taster_WiserRoom-11 03
       Taster_WiserRoom-12 03
       Taster_WiserRoom-13 03
       Taster_WiserRoom-14 03
       Taster_WiserRoom-2 03
       Taster_WiserRoom-3 03
       Taster_WiserRoom-4 03
       Taster_WiserRoom-5 03
       Taster_WiserRoom-6 03
       Taster_WiserRoom-7 03
       Taster_WiserRoom-8 03
       Taster_WiserRoom-9 03
       globaleSzenen 05
       lokaleSzenen 06
     readingOutdated:
     readingSubNum:
       Taster_OpenLevel-1 -1
       Taster_OpenLevel-10 -10
       Taster_OpenLevel-11 -11
       Taster_OpenLevel-12 -12
       Taster_OpenLevel-13 -13
       Taster_OpenLevel-14 -14
       Taster_OpenLevel-2 -2
       Taster_OpenLevel-3 -3
       Taster_OpenLevel-4 -4
       Taster_OpenLevel-5 -5
       Taster_OpenLevel-6 -6
       Taster_OpenLevel-7 -7
       Taster_OpenLevel-8 -8
       Taster_OpenLevel-9 -9
       Taster_WiserLink-1 -1
       Taster_WiserLink-10 -10
       Taster_WiserLink-11 -11
       Taster_WiserLink-12 -12
       Taster_WiserLink-13 -13
       Taster_WiserLink-14 -14
       Taster_WiserLink-2 -2
       Taster_WiserLink-3 -3
       Taster_WiserLink-4 -4
       Taster_WiserLink-5 -5
       Taster_WiserLink-6 -6
       Taster_WiserLink-7 -7
       Taster_WiserLink-8 -8
       Taster_WiserLink-9 -9
       Taster_WiserName-1 -1
       Taster_WiserName-10 -10
       Taster_WiserName-11 -11
       Taster_WiserName-12 -12
       Taster_WiserName-13 -13
       Taster_WiserName-14 -14
       Taster_WiserName-2 -2
       Taster_WiserName-3 -3
       Taster_WiserName-4 -4
       Taster_WiserName-5 -5
       Taster_WiserName-6 -6
       Taster_WiserName-7 -7
       Taster_WiserName-8 -8
       Taster_WiserName-9 -9
       Taster_WiserRoom-1 -1
       Taster_WiserRoom-10 -10
       Taster_WiserRoom-11 -11
       Taster_WiserRoom-12 -12
       Taster_WiserRoom-13 -13
       Taster_WiserRoom-14 -14
       Taster_WiserRoom-2 -2
       Taster_WiserRoom-3 -3
       Taster_WiserRoom-4 -4
       Taster_WiserRoom-5 -5
       Taster_WiserRoom-6 -6
       Taster_WiserRoom-7 -7
       Taster_WiserRoom-8 -8
       Taster_WiserRoom-9 -9
     requestReadings:
       get01:
         Taster_WiserLink-1 get 01-1
         Taster_WiserLink-10 get 01-10
         Taster_WiserLink-11 get 01-11
         Taster_WiserLink-12 get 01-12
         Taster_WiserLink-13 get 01-13
         Taster_WiserLink-14 get 01-14
         Taster_WiserLink-2 get 01-2
         Taster_WiserLink-3 get 01-3
         Taster_WiserLink-4 get 01-4
         Taster_WiserLink-5 get 01-5
         Taster_WiserLink-6 get 01-6
         Taster_WiserLink-7 get 01-7
         Taster_WiserLink-8 get 01-8
         Taster_WiserLink-9 get 01-9
       get02:
         Taster_OpenLevel-1 get 02-1
         Taster_OpenLevel-10 get 02-10
         Taster_OpenLevel-11 get 02-11
         Taster_OpenLevel-12 get 02-12
         Taster_OpenLevel-13 get 02-13
         Taster_OpenLevel-14 get 02-14
         Taster_OpenLevel-2 get 02-2
         Taster_OpenLevel-3 get 02-3
         Taster_OpenLevel-4 get 02-4
         Taster_OpenLevel-5 get 02-5
         Taster_OpenLevel-6 get 02-6
         Taster_OpenLevel-7 get 02-7
         Taster_OpenLevel-8 get 02-8
         Taster_OpenLevel-9 get 02-9
       get03:
         Taster_WiserRoom-1 get 03-1
         Taster_WiserRoom-10 get 03-10
         Taster_WiserRoom-11 get 03-11
         Taster_WiserRoom-12 get 03-12
         Taster_WiserRoom-13 get 03-13
         Taster_WiserRoom-14 get 03-14
         Taster_WiserRoom-2 get 03-2
         Taster_WiserRoom-3 get 03-3
         Taster_WiserRoom-4 get 03-4
         Taster_WiserRoom-5 get 03-5
         Taster_WiserRoom-6 get 03-6
         Taster_WiserRoom-7 get 03-7
         Taster_WiserRoom-8 get 03-8
         Taster_WiserRoom-9 get 03-9
       get04:
         Taster_WiserName-1 get 04-1
         Taster_WiserName-10 get 04-10
         Taster_WiserName-11 get 04-11
         Taster_WiserName-12 get 04-12
         Taster_WiserName-13 get 04-13
         Taster_WiserName-14 get 04-14
         Taster_WiserName-2 get 04-2
         Taster_WiserName-3 get 04-3
         Taster_WiserName-4 get 04-4
         Taster_WiserName-5 get 04-5
         Taster_WiserName-6 get 04-6
         Taster_WiserName-7 get 04-7
         Taster_WiserName-8 get 04-8
         Taster_WiserName-9 get 04-9
       get05:
         globaleSzenen get 05
       get06:
         lokaleSzenen get 06
       get07:
         HomeTouch_STATE get 07
   lastpoll:
     HomeTouch_STATE 1637499591.57388
     Taster_OpenLevel 1637499591.57388
     Taster_WiserLink 1637499591.57388
     Taster_WiserName 1637499591.57388
     Taster_WiserRoom 1637499591.57388
     globaleSzenen 1637499591.57388
     lokaleSzenen 1637499591.57388
Attributes:
   alias      HomeTouch
   enableControlSet 1
   get01Name  Taster_WiserLink
   get01RegOpt g
   get01Regex \/(wlss[0-9]*)
   get01URL   http://Merten-Home-Touch/ocf/oic/res
   get02Name  Taster_OpenLevel
   get02RegOpt g
   get02Regex "openLevel":[ \t]+([\d]+)
   get03Name  Taster_WiserRoom
   get03RegOpt g
   get03Regex "wiserone\.room":[ \t]+"([\d]+_[\w]+_*[\w]*)"
   get04Name  Taster_WiserName
   get04RegOpt g
   get04Regex "n":[ \t]+"([\w]*[\s\d]*)"
   get05JSON  sceneValues
   get05Name  globaleSzenen
   get05Poll  1
   get05RecombineExpr join " ", @matchlist
   get05URL   http://Merten-Home-Touch/ocf/sceneCollection/0
   get06JSON  sceneValues
   get06Name  lokaleSzenen
   get06Poll  1
   get06RecombineExpr join ",", @matchlist
   get06URL   http://Merten-Home-Touch/ocf/sceneCollection/1
   get07JSON  networkAuthentication
   get07Name  HomeTouch_STATE
   get07URL   http://Merten-Home-Touch/ocf/wlan0
   getHeader1 Content-Type: application/json
   getPoll    1
   getURL     http://Merten-Home-Touch/ocf/deviceStatus
   httpVersion 1.1
   icon       hm-tc-it-wm-w-eu
   readingMaxAge 300
   readingMaxAgeReplacement "offline"
   readingMaxAgeReplacementMode text
   replacement03Mode reading
   replacement03Regex %Taster_URL%
   replacement03Value Taster_URL
   room       SYSTEM,WISER
   set01Data  {"isIrrelevant": false,"lastScene": "$val"}
   set01Name  setGlobaleSzenen
   set01TextArg 1
   set01URL   http://Merten-Home-Touch/ocf/sceneCollection/0
   set02Data  {"isIrrelevant": false,"lastScene": "$val"}
   set02Name  setLokaleSzenen
   set02TextArg 1
   set02URL   http://Merten-Home-Touch/ocf/sceneCollection/1
   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   %Taster_URL%
   stateFormat HomeTouch_STATE
   userReadings Taster_URL
   userattr   get01Decode get01JSON get01Poll:0,1 get01RecombineExpr get01extractAllJSON:0,1,2 get02ExtractAllJSON:0,1,2 get02JSON get02Poll:0,1 get02RecombineExpr get02URL get03Poll:0,1 get03RecombineExpr get03URL reading03Name set01Hint set02Hint set03IMap set03replacement03Value set04Name set04TextArg:0,1
   verbose    0


Dabei werden mit get05 und get06 Werte ausgelesen und gruppiert (join ",", @matchlist).

Ergbnisse/Readings:
globaleSzenen: Home Away Sleep
   
lokaleSzenen: Bad_OG_down,Bad_OG_up,WZ_down,WZ_up,Buero_down,Buero_up,GZ_down,GZ_up,KZ_down,KZ_up,SZ_down,SZ_up


Jetzt habe ich mit set01 und set02 zwei URLs, die ich auch in der setListe zur Auswahl habe... aber dann wird ein Freitextfeld als %val angezeigt und dieser Value in die URL übergeben.

Die erste Frage wäre jetzt, ich habe ja in den Readings "globaleSzenen" und "lokaleSzenen" genau die Values, die ich übergeben möchte bzw. die ich nur übergeben kann.
Kann ich die nicht gleich oben im Set als Parameter einbauen?!



Meine zweite Frage wäre, ich habe diverse Readings (alle Taster*-Readings) die an unterschiedlichen Stellen in einem JSON Baum stehen. Das heißt, ich kann die nicht alles mit einem RegExp erwischen... kann man diese Werte aber auch irgendwie gruppieren?!

Gibts eine Möglichkeit zwei Value in eine URL zu Übergeben?!

Bei
set01URL   http://Merten-Home-Touch/ocf/sceneCollection/0
   set02Data  {"isIrrelevant": false,"lastScene": "$val"}

Kann ich einen Value übergeben... aber ich habe eine URL, wo ich quasi den Taster auswählen und dann den Wert übergeben muss.

Alternativ beibt mir nur für jeden Rollladentaster ein setURL einzubauen... das wollte ich aber irgendwie flexibler/intelligenter machen...


VG+Danke
Rene
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 November 2021, 16:09:50
Hallo Rene,

Mit Replacements kannst Du beliebige Dinge, auch mehrere Redings in Requests einbauen.
Wenn Du mehrere Regexes auf eine Antwort anwenden möchtest, dann geht das über die Attribute readingXYname etc. und get[0-9]*CheckAllReadings


Gruß
     Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 23 November 2021, 18:08:09
Hallo Stefan,

ich glaub ich versteh was du meinst, aber so richtig machts nicht klick... viell. kannst du mir unter die Arme greifen, damit ich das erste get hinbekomme...
ich fasse mal zusammen:

Ich bau mir in meinem Fall !!ein!!
   getURL     http://Merten-Home-Touch/ocf/deviceStatus
da ich aus dieser Datei alles extrahieren muss. (siehe Anhang, einmal als JSON Datei und einmal ein list Device mit extractAllJSON

Das sind alle meine Jalousieschalter,  mit allen Infos... 3 JSON "Blöcke" ergeben immer alle Infos zu einem Jalousieschalter.
zB für den ersten Schalter "wlss31"

2021-11-21 18:24:50   01_href         /wlss31/openLevel
     2021-11-21 18:24:50   01_rep_if_0     oic.if.baseline
     2021-11-21 18:24:50   01_rep_openLevel 0
     2021-11-21 18:24:50   01_rep_range_0  0
     2021-11-21 18:24:50   01_rep_range_1  100
     2021-11-21 18:24:50   01_rep_rt_0     oic.r.openlevel
     2021-11-21 18:24:50   01_rep_step     1
     2021-11-21 18:24:50   02_href         /wlss31/oic/con
     2021-11-21 18:24:50   02_rep_if_0     oic.if.baseline
     2021-11-21 18:24:50   02_rep_n        Rollladen 2
     2021-11-21 18:24:50   02_rep_rt_0     oic.wk.con
     2021-11-21 18:24:50   02_rep_wiserone.room 17_WZ
     2021-11-21 18:24:50   03_href         /wlss31/shutter/1
     2021-11-21 18:24:50   03_rep_action   1
     2021-11-21 18:24:50   03_rep_if_0     oic.if.baseline
     2021-11-21 18:24:50   03_rep_if_1     oic.if.a
     2021-11-21 18:24:50   03_rep_rt_0     wiserone.r.window.cover


Ich würde dann weiter für den ersten Jalousieschalter
   get01Name  Taster 1
   get01CheckAllReadings
   readings01-1Name Status
   readings01-1JSON /wlss31/openLevel: 01_rep_openLevel
   readings01-2Name Name
   readings01-2JSON /wlss31/oic/con : 02_rep_n     
   readings01-3Name Raum
   readings01-3JSON /wlss31/oic/con : 02_rep_wiserone.room


Wäre das der richtige Weg?
Da sich alle Schlüsselwörter wiederholen in der Datei, weiß ich gar nicht wie ich das im JSON angeben soll... kann man das irgendwie als "Pfad" angeben?! Ich habe oben im Bsp einfach mal einen Doppelpunkt als Trennzeichen genommen.

VG+Danke
René




Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 23 November 2021, 20:15:37
Hallo Rene,

mach einfach zunächst mal einen Versuch mit extractAllJSON 2, dann erzeugt Dir das Modul die entsprechenden Attribute.

Aus der Commandref:
Zitat
Another option is setting extractAllJSON or get01ExtractAllJSON to 2. In this case the module analyzes the JSON data when it is first read, creates readingXXName and readingXXJSON attributes for you and then removes the extractAllJSON attribute.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 23 November 2021, 22:28:48
Hi Stefan,

das hatte ich bereits mal geamcht, aber sieh selber...
Die readingsXXXName / readingsXXXJSON werden hochgezähtl... aber sind so für mich aktuell völlig sinnfrei, weil ich keinen Anhaltspunkt habe, was zu was gehört...

[code]Internals:
   BUSY       0
   DEF        http://Merten-Home-Touch/ocf/deviceStatus 10
   FUUID      61916189-f33f-0804-7492-370aa15451ffcab2
   Interval   10
   MainURL    http://Merten-Home-Touch/ocf/deviceStatus
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       HT1
   NOTIFYDEV  global
   NR         622
   NTFY_ORDER 50-HT1
   STATE      ???
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://Merten-Home-Touch:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://Merten-Home-Touch/ocf/deviceStatus
     header     
     host       Merten-Home-Touch
     httpheader HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Tue, 23 Nov 2021 21:22:42 GMT
Content-Type: application/json
Content-Length: 6108
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /ocf/deviceStatus
     protocol   http
     redirects  0
     timeout    2
     url        http://Merten-Home-Touch/ocf/deviceStatus
     sslargs:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2021-11-23 22:22:42   01_href         /wlss31/openLevel
     2021-11-23 22:22:42   01_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   01_rep_openLevel 0
     2021-11-23 22:22:42   01_rep_range_0  0
     2021-11-23 22:22:42   01_rep_range_1  100
     2021-11-23 22:22:42   01_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   01_rep_step     1
     2021-11-23 22:22:42   02_href         /wlss31/oic/con
     2021-11-23 22:22:42   02_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   02_rep_n        Rollladen 2
     2021-11-23 22:22:42   02_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   02_rep_wiserone.room 17_WZ
     2021-11-23 22:22:42   03_href         /wlss31/shutter/1
     2021-11-23 22:22:42   03_rep_action   1
     2021-11-23 22:22:42   03_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   03_rep_if_1     oic.if.a
     2021-11-23 22:22:42   03_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   04_href         /wlss32/openLevel
     2021-11-23 22:22:42   04_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   04_rep_openLevel 0
     2021-11-23 22:22:42   04_rep_range_0  0
     2021-11-23 22:22:42   04_rep_range_1  100
     2021-11-23 22:22:42   04_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   04_rep_step     1
     2021-11-23 22:22:42   05_href         /wlss32/oic/con
     2021-11-23 22:22:42   05_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   05_rep_n        Kueche
     2021-11-23 22:22:42   05_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   05_rep_wiserone.room 17_WZ
     2021-11-23 22:22:42   06_href         /wlss32/shutter/1
     2021-11-23 22:22:42   06_rep_action   1
     2021-11-23 22:22:42   06_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   06_rep_if_1     oic.if.a
     2021-11-23 22:22:42   06_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   07_href         /wlss37/openLevel
     2021-11-23 22:22:42   07_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   07_rep_openLevel 0
     2021-11-23 22:22:42   07_rep_range_0  0
     2021-11-23 22:22:42   07_rep_range_1  100
     2021-11-23 22:22:42   07_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   07_rep_step     1
     2021-11-23 22:22:42   08_href         /wlss37/oic/con
     2021-11-23 22:22:42   08_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   08_rep_n        Rollladen 1
     2021-11-23 22:22:42   08_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   08_rep_wiserone.room 17_WZ
     2021-11-23 22:22:42   09_href         /wlss37/shutter/1
     2021-11-23 22:22:42   09_rep_action   1
     2021-11-23 22:22:42   09_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   09_rep_if_1     oic.if.a
     2021-11-23 22:22:42   09_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   10_href         /wlss39/openLevel
     2021-11-23 22:22:42   10_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   10_rep_openLevel 0
     2021-11-23 22:22:42   10_rep_range_0  0
     2021-11-23 22:22:42   10_rep_range_1  100
     2021-11-23 22:22:42   10_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   10_rep_step     1
     2021-11-23 22:22:42   11_href         /wlss39/oic/con
     2021-11-23 22:22:42   11_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   11_rep_n        Rollladen
     2021-11-23 22:22:42   11_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   11_rep_wiserone.room 04_Bad_Unten
     2021-11-23 22:22:42   12_href         /wlss39/shutter/1
     2021-11-23 22:22:42   12_rep_action   1
     2021-11-23 22:22:42   12_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   12_rep_if_1     oic.if.a
     2021-11-23 22:22:42   12_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   13_href         /wlss42/openLevel
     2021-11-23 22:22:42   13_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   13_rep_openLevel 0
     2021-11-23 22:22:42   13_rep_range_0  0
     2021-11-23 22:22:42   13_rep_range_1  100
     2021-11-23 22:22:42   13_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   13_rep_step     1
     2021-11-23 22:22:42   14_href         /wlss42/oic/con
     2021-11-23 22:22:42   14_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   14_rep_n        Rollladen 1
     2021-11-23 22:22:42   14_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   14_rep_wiserone.room 23_Buero
     2021-11-23 22:22:42   15_href         /wlss42/shutter/1
     2021-11-23 22:22:42   15_rep_action   1
     2021-11-23 22:22:42   15_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   15_rep_if_1     oic.if.a
     2021-11-23 22:22:42   15_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   16_href         /wlss44/openLevel
     2021-11-23 22:22:42   16_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   16_rep_openLevel 0
     2021-11-23 22:22:42   16_rep_range_0  0
     2021-11-23 22:22:42   16_rep_range_1  100
     2021-11-23 22:22:42   16_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   16_rep_step     1
     2021-11-23 22:22:42   17_href         /wlss44/oic/con
     2021-11-23 22:22:42   17_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   17_rep_n        Rollladen 2
     2021-11-23 22:22:42   17_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   17_rep_wiserone.room 23_Buero
     2021-11-23 22:22:42   18_href         /wlss44/shutter/1
     2021-11-23 22:22:42   18_rep_action   1
     2021-11-23 22:22:42   18_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   18_rep_if_1     oic.if.a
     2021-11-23 22:22:42   18_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   19_href         /wlss47/openLevel
     2021-11-23 22:22:42   19_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   19_rep_openLevel 0
     2021-11-23 22:22:42   19_rep_range_0  0
     2021-11-23 22:22:42   19_rep_range_1  100
     2021-11-23 22:22:42   19_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   19_rep_step     1
     2021-11-23 22:22:42   20_href         /wlss47/oic/con
     2021-11-23 22:22:42   20_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   20_rep_n        Rollladen 1
     2021-11-23 22:22:42   20_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   20_rep_wiserone.room 06_SZ
     2021-11-23 22:22:42   21_href         /wlss47/shutter/1
     2021-11-23 22:22:42   21_rep_action   1
     2021-11-23 22:22:42   21_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   21_rep_if_1     oic.if.a
     2021-11-23 22:22:42   21_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   22_href         /wlss49/openLevel
     2021-11-23 22:22:42   22_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   22_rep_openLevel 0
     2021-11-23 22:22:42   22_rep_range_0  0
     2021-11-23 22:22:42   22_rep_range_1  100
     2021-11-23 22:22:42   22_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   22_rep_step     1
     2021-11-23 22:22:42   23_href         /wlss49/oic/con
     2021-11-23 22:22:42   23_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   23_rep_n        Rollladen 2
     2021-11-23 22:22:42   23_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   23_rep_wiserone.room 06_SZ
     2021-11-23 22:22:42   24_href         /wlss49/shutter/1
     2021-11-23 22:22:42   24_rep_action   1
     2021-11-23 22:22:42   24_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   24_rep_if_1     oic.if.a
     2021-11-23 22:22:42   24_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   25_href         /wlss51/openLevel
     2021-11-23 22:22:42   25_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   25_rep_openLevel 0
     2021-11-23 22:22:42   25_rep_range_0  0
     2021-11-23 22:22:42   25_rep_range_1  100
     2021-11-23 22:22:42   25_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   25_rep_step     1
     2021-11-23 22:22:42   26_href         /wlss51/oic/con
     2021-11-23 22:22:42   26_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   26_rep_n        Rollladen 1
     2021-11-23 22:22:42   26_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   26_rep_wiserone.room 09_Gaestezimmer
     2021-11-23 22:22:42   27_href         /wlss51/shutter/1
     2021-11-23 22:22:42   27_rep_action   1
     2021-11-23 22:22:42   27_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   27_rep_if_1     oic.if.a
     2021-11-23 22:22:42   27_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   28_href         /wlss68/openLevel
     2021-11-23 22:22:42   28_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   28_rep_openLevel 0
     2021-11-23 22:22:42   28_rep_range_0  0
     2021-11-23 22:22:42   28_rep_range_1  100
     2021-11-23 22:22:42   28_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   28_rep_step     1
     2021-11-23 22:22:42   29_href         /wlss68/oic/con
     2021-11-23 22:22:42   29_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   29_rep_n        Rollladen 1
     2021-11-23 22:22:42   29_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   29_rep_wiserone.room 09_KZ
     2021-11-23 22:22:42   30_href         /wlss68/shutter/1
     2021-11-23 22:22:42   30_rep_action   1
     2021-11-23 22:22:42   30_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   30_rep_if_1     oic.if.a
     2021-11-23 22:22:42   30_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   31_href         /wlss70/openLevel
     2021-11-23 22:22:42   31_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   31_rep_openLevel 0
     2021-11-23 22:22:42   31_rep_range_0  0
     2021-11-23 22:22:42   31_rep_range_1  100
     2021-11-23 22:22:42   31_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   31_rep_step     1
     2021-11-23 22:22:42   32_href         /wlss70/oic/con
     2021-11-23 22:22:42   32_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   32_rep_n        Rollladen 2
     2021-11-23 22:22:42   32_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   32_rep_wiserone.room 09_KZ
     2021-11-23 22:22:42   33_href         /wlss70/shutter/1
     2021-11-23 22:22:42   33_rep_action   1
     2021-11-23 22:22:42   33_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   33_rep_if_1     oic.if.a
     2021-11-23 22:22:42   33_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   34_href         /wlss97/openLevel
     2021-11-23 22:22:42   34_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   34_rep_openLevel 0
     2021-11-23 22:22:42   34_rep_range_0  0
     2021-11-23 22:22:42   34_rep_range_1  100
     2021-11-23 22:22:42   34_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   34_rep_step     1
     2021-11-23 22:22:42   35_href         /wlss97/oic/con
     2021-11-23 22:22:42   35_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   35_rep_n        Terrasse
     2021-11-23 22:22:42   35_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   35_rep_wiserone.room 17_WZ
     2021-11-23 22:22:42   36_href         /wlss97/shutter/1
     2021-11-23 22:22:42   36_rep_action   1
     2021-11-23 22:22:42   36_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   36_rep_if_1     oic.if.a
     2021-11-23 22:22:42   36_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   37_href         /wlss99/openLevel
     2021-11-23 22:22:42   37_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   37_rep_openLevel 0
     2021-11-23 22:22:42   37_rep_range_0  0
     2021-11-23 22:22:42   37_rep_range_1  100
     2021-11-23 22:22:42   37_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   37_rep_step     1
     2021-11-23 22:22:42   38_href         /wlss99/oic/con
     2021-11-23 22:22:42   38_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   38_rep_n        Rollladen 2
     2021-11-23 22:22:42   38_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   38_rep_wiserone.room 09_Gaestezimmer
     2021-11-23 22:22:42   39_href         /wlss99/shutter/1
     2021-11-23 22:22:42   39_rep_action   1
     2021-11-23 22:22:42   39_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   39_rep_if_1     oic.if.a
     2021-11-23 22:22:42   39_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   40_href         /wlss102/openLevel
     2021-11-23 22:22:42   40_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   40_rep_openLevel 0
     2021-11-23 22:22:42   40_rep_range_0  0
     2021-11-23 22:22:42   40_rep_range_1  100
     2021-11-23 22:22:42   40_rep_rt_0     oic.r.openlevel
     2021-11-23 22:22:42   40_rep_step     1
     2021-11-23 22:22:42   41_href         /wlss102/oic/con
     2021-11-23 22:22:42   41_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   41_rep_n        Rollladen
     2021-11-23 22:22:42   41_rep_rt_0     oic.wk.con
     2021-11-23 22:22:42   41_rep_wiserone.room 04_Bad_Oben
     2021-11-23 22:22:42   42_href         /wlss102/shutter/1
     2021-11-23 22:22:42   42_rep_action   1
     2021-11-23 22:22:42   42_rep_if_0     oic.if.baseline
     2021-11-23 22:22:42   42_rep_if_1     oic.if.a
     2021-11-23 22:22:42   42_rep_rt_0     wiserone.r.window.cover
     2021-11-23 22:22:42   wlss31_         1
   REQUEST:
     context    get
     data       
     header     
     ignoreredirects 0
     num        02
     retryCount 0
     type       get02
     url        http://Merten-Home-Touch/ocf/deviceStatus
   defptr:
     readingBase:
       01_href    reading
       01_rep_if_0 reading
       01_rep_openLevel reading
       01_rep_range_0 reading
       01_rep_range_1 reading
       01_rep_rt_0 reading
       01_rep_step reading
       02_href    reading
       02_rep_if_0 reading
       02_rep_n   reading
       02_rep_rt_0 reading
       02_rep_wiserone.room reading
       03_href    reading
       03_rep_action reading
       03_rep_if_0 reading
       03_rep_if_1 reading
       03_rep_rt_0 reading
       04_href    reading
       04_rep_if_0 reading
       04_rep_openLevel reading
       04_rep_range_0 reading
       04_rep_range_1 reading
       04_rep_rt_0 reading
       04_rep_step reading
       05_href    reading
       05_rep_if_0 reading
       05_rep_n   reading
       05_rep_rt_0 reading
       05_rep_wiserone.room reading
       06_href    reading
       06_rep_action reading
       06_rep_if_0 reading
       06_rep_if_1 reading
       06_rep_rt_0 reading
       07_href    reading
       07_rep_if_0 reading
       07_rep_openLevel reading
       07_rep_range_0 reading
       07_rep_range_1 reading
       07_rep_rt_0 reading
       07_rep_step reading
       08_href    reading
       08_rep_if_0 reading
       08_rep_n   reading
       08_rep_rt_0 reading
       08_rep_wiserone.room reading
       09_href    reading
       09_rep_action reading
       09_rep_if_0 reading
       09_rep_if_1 reading
       09_rep_rt_0 reading
       10_href    reading
       10_rep_if_0 reading
       10_rep_openLevel reading
       10_rep_range_0 reading
       10_rep_range_1 reading
       10_rep_rt_0 reading
       10_rep_step reading
       11_href    reading
       11_rep_if_0 reading
       11_rep_n   reading
       11_rep_rt_0 reading
       11_rep_wiserone.room reading
       12_href    reading
       12_rep_action reading
       12_rep_if_0 reading
       12_rep_if_1 reading
       12_rep_rt_0 reading
       13_href    reading
       13_rep_if_0 reading
       13_rep_openLevel reading
       13_rep_range_0 reading
       13_rep_range_1 reading
       13_rep_rt_0 reading
       13_rep_step reading
       14_href    reading
       14_rep_if_0 reading
       14_rep_n   reading
       14_rep_rt_0 reading
       14_rep_wiserone.room reading
       15_href    reading
       15_rep_action reading
       15_rep_if_0 reading
       15_rep_if_1 reading
       15_rep_rt_0 reading
       16_href    reading
       16_rep_if_0 reading
       16_rep_openLevel reading
       16_rep_range_0 reading
       16_rep_range_1 reading
       16_rep_rt_0 reading
       16_rep_step reading
       17_href    reading
       17_rep_if_0 reading
       17_rep_n   reading
       17_rep_rt_0 reading
       17_rep_wiserone.room reading
       18_href    reading
       18_rep_action reading
       18_rep_if_0 reading
       18_rep_if_1 reading
       18_rep_rt_0 reading
       19_href    reading
       19_rep_if_0 reading
       19_rep_openLevel reading
       19_rep_range_0 reading
       19_rep_range_1 reading
       19_rep_rt_0 reading
       19_rep_step reading
       20_href    reading
       20_rep_if_0 reading
       20_rep_n   reading
       20_rep_rt_0 reading
       20_rep_wiserone.room reading
       21_href    reading
       21_rep_action reading
       21_rep_if_0 reading
       21_rep_if_1 reading
       21_rep_rt_0 reading
       22_href    reading
       22_rep_if_0 reading
       22_rep_openLevel reading
       22_rep_range_0 reading
       22_rep_range_1 reading
       22_rep_rt_0 reading
       22_rep_step reading
       23_href    reading
       23_rep_if_0 reading
       23_rep_n   reading
       23_rep_rt_0 reading
       23_rep_wiserone.room reading
       24_href    reading
       24_rep_action reading
       24_rep_if_0 reading
       24_rep_if_1 reading
       24_rep_rt_0 reading
       25_href    reading
       25_rep_if_0 reading
       25_rep_openLevel reading
       25_rep_range_0 reading
       25_rep_range_1 reading
       25_rep_rt_0 reading
       25_rep_step reading
       26_href    reading
       26_rep_if_0 reading
       26_rep_n   reading
       26_rep_rt_0 reading
       26_rep_wiserone.room reading
       27_href    reading
       27_rep_action reading
       27_rep_if_0 reading
       27_rep_if_1 reading
       27_rep_rt_0 reading
       28_href    reading
       28_rep_if_0 reading
       28_rep_openLevel reading
       28_rep_range_0 reading
       28_rep_range_1 reading
       28_rep_rt_0 reading
       28_rep_step reading
       29_href    reading
       29_rep_if_0 reading
       29_rep_n   reading
       29_rep_rt_0 reading
       29_rep_wiserone.room reading
       30_href    reading
       30_rep_action reading
       30_rep_if_0 reading
       30_rep_if_1 reading
       30_rep_rt_0 reading
       31_href    reading
       31_rep_if_0 reading
       31_rep_openLevel reading
       31_rep_range_0 reading
       31_rep_range_1 reading
       31_rep_rt_0 reading
       31_rep_step reading
       32_href    reading
       32_rep_if_0 reading
       32_rep_n   reading
       32_rep_rt_0 reading
       32_rep_wiserone.room reading
       33_href    reading
       33_rep_action reading
       33_rep_if_0 reading
       33_rep_if_1 reading
       33_rep_rt_0 reading
       34_href    reading
       34_rep_if_0 reading
       34_rep_openLevel reading
       34_rep_range_0 reading
       34_rep_range_1 reading
       34_rep_rt_0 reading
       34_rep_step reading
       35_href    reading
       35_rep_if_0 reading
       35_rep_n   reading
       35_rep_rt_0 reading
       35_rep_wiserone.room reading
       36_href    reading
       36_rep_action reading
       36_rep_if_0 reading
       36_rep_if_1 reading
       36_rep_rt_0 reading
       37_href    reading
       37_rep_if_0 reading
       37_rep_openLevel reading
       37_rep_range_0 reading
       37_rep_range_1 reading
       37_rep_rt_0 reading
       37_rep_step reading
       38_href    reading
       38_rep_if_0 reading
       38_rep_n   reading
       38_rep_rt_0 reading
       38_rep_wiserone.room reading
       39_href    reading
       39_rep_action reading
       39_rep_if_0 reading
       39_rep_if_1 reading
       39_rep_rt_0 reading
       40_href    reading
       40_rep_if_0 reading
       40_rep_openLevel reading
       40_rep_range_0 reading
       40_rep_range_1 reading
       40_rep_rt_0 reading
       40_rep_step reading
       41_href    reading
       41_rep_if_0 reading
       41_rep_n   reading
       41_rep_rt_0 reading
       41_rep_wiserone.room reading
       42_href    reading
       42_rep_action reading
       42_rep_if_0 reading
       42_rep_if_1 reading
       42_rep_rt_0 reading
       wlss31_    get
     readingNum:
       01_href    332
       01_rep_if_0 134
       01_rep_openLevel 140
       01_rep_range_0 328
       01_rep_range_1 310
       01_rep_rt_0 143
       01_rep_step 295
       02_href    300
       02_rep_if_0 108
       02_rep_n   202
       02_rep_rt_0 124
       02_rep_wiserone.room 117
       03_href    135
       03_rep_action 128
       03_rep_if_0 331
       03_rep_if_1 121
       03_rep_rt_0 336
       04_href    105
       04_rep_if_0 296
       04_rep_openLevel 316
       04_rep_range_0 100
       04_rep_range_1 145
       04_rep_rt_0 304
       04_rep_step 136
       05_href    301
       05_rep_if_0 107
       05_rep_n   205
       05_rep_rt_0 126
       05_rep_wiserone.room 120
       06_href    313
       06_rep_action 318
       06_rep_if_0 116
       06_rep_if_1 327
       06_rep_rt_0 102
       07_href    199
       07_rep_if_0 261
       07_rep_openLevel 277
       07_rep_range_0 189
       07_rep_range_1 169
       07_rep_rt_0 288
       07_rep_step 149
       08_href    113
       08_rep_if_0 308
       08_rep_n   259
       08_rep_rt_0 294
       08_rep_wiserone.room 303
       09_href    309
       09_rep_action 321
       09_rep_if_0 112
       09_rep_if_1 324
       09_rep_rt_0 106
       10_href    320
       10_rep_if_0 122
       10_rep_openLevel 101
       10_rep_range_0 317
       10_rep_range_1 326
       10_rep_rt_0 110
       10_rep_step 334
       11_href    223
       11_rep_if_0 154
       11_rep_n   144
       11_rep_rt_0 166
       11_rep_wiserone.room 175
       12_href    255
       12_rep_action 263
       12_rep_if_0 182
       12_rep_if_1 239
       12_rep_rt_0 210
       13_href    151
       13_rep_if_0 225
       13_rep_openLevel 247
       13_rep_range_0 146
       13_rep_range_1 219
       13_rep_rt_0 241
       13_rep_step 193
       14_href    200
       14_rep_if_0 260
       14_rep_n   314
       14_rep_rt_0 287
       14_rep_wiserone.room 276
       15_href    252
       15_rep_action 262
       15_rep_if_0 183
       15_rep_if_1 240
       15_rep_rt_0 206
       16_href    290
       16_rep_if_0 220
       16_rep_openLevel 180
       16_rep_range_0 285
       16_rep_range_1 226
       16_rep_rt_0 188
       16_rep_step 245
       17_href    104
       17_rep_if_0 297
       17_rep_n   291
       17_rep_rt_0 305
       17_rep_wiserone.room 315
       18_href    218
       18_rep_action 211
       18_rep_if_0 281
       18_rep_if_1 160
       18_rep_rt_0 269
       19_href    282
       19_rep_if_0 215
       19_rep_openLevel 185
       19_rep_range_0 292
       19_rep_range_1 222
       19_rep_rt_0 192
       19_rep_step 242
       20_href    333
       20_rep_if_0 142
       20_rep_n   163
       20_rep_rt_0 127
       20_rep_wiserone.room 132
       21_href    267
       21_rep_action 256
       21_rep_if_0 195
       21_rep_if_1 249
       21_rep_rt_0 217
       22_href    229
       22_rep_if_0 159
       22_rep_openLevel 170
       22_rep_range_0 233
       22_rep_range_1 270
       22_rep_rt_0 177
       22_rep_step 250
       23_href    198
       23_rep_if_0 264
       23_rep_n   311
       23_rep_rt_0 283
       23_rep_wiserone.room 274
       24_href    148
       24_rep_action 157
       24_rep_if_0 228
       24_rep_if_1 209
       24_rep_rt_0 238
       25_href    231
       25_rep_if_0 156
       25_rep_openLevel 174
       25_rep_range_0 236
       25_rep_range_1 272
       25_rep_rt_0 178
       25_rep_step 254
       26_href    246
       26_rep_if_0 168
       26_rep_n   137
       26_rep_rt_0 147
       26_rep_wiserone.room 162
       27_href    138
       27_rep_action 131
       27_rep_if_0 330
       27_rep_if_1 123
       27_rep_rt_0 337
       28_href    167
       28_rep_if_0 243
       28_rep_openLevel 234
       28_rep_range_0 171
       28_rep_range_1 190
       28_rep_rt_0 224
       28_rep_step 213
       29_href    244
       29_rep_if_0 165
       29_rep_n   133
       29_rep_rt_0 152
       29_rep_wiserone.room 164
       30_href    306
       30_rep_action 319
       30_rep_if_0 114
       30_rep_if_1 323
       30_rep_rt_0 103
       31_href    232
       31_rep_if_0 155
       31_rep_openLevel 173
       31_rep_range_0 235
       31_rep_range_1 273
       31_rep_rt_0 179
       31_rep_step 253
       32_href    265
       32_rep_if_0 196
       32_rep_n   118
       32_rep_rt_0 214
       32_rep_wiserone.room 203
       33_href    158
       33_rep_action 150
       33_rep_if_0 230
       33_rep_if_1 212
       33_rep_rt_0 248
       34_href    181
       34_rep_if_0 257
       34_rep_openLevel 289
       34_rep_range_0 186
       34_rep_range_1 176
       34_rep_rt_0 278
       34_rep_step 161
       35_href    268
       35_rep_if_0 194
       35_rep_n   119
       35_rep_rt_0 216
       35_rep_wiserone.room 204
       36_href    275
       36_rep_action 293
       36_rep_if_0 201
       36_rep_if_1 221
       36_rep_rt_0 187
       37_href    109
       37_rep_if_0 299
       37_rep_openLevel 312
       37_rep_range_0 111
       37_rep_range_1 139
       37_rep_rt_0 322
       37_rep_step 129
       38_href    207
       38_rep_if_0 280
       38_rep_n   302
       38_rep_rt_0 251
       38_rep_wiserone.room 258
       39_href    279
       39_rep_action 286
       39_rep_if_0 208
       39_rep_if_1 227
       39_rep_rt_0 184
       40_href    197
       40_rep_if_0 266
       40_rep_openLevel 271
       40_rep_range_0 191
       40_rep_range_1 172
       40_rep_rt_0 284
       40_rep_step 153
       41_href    141
       41_rep_if_0 335
       41_rep_n   237
       41_rep_rt_0 325
       41_rep_wiserone.room 329
       42_href    115
       42_rep_action 125
       42_rep_if_0 307
       42_rep_if_1 130
       42_rep_rt_0 298
       wlss31_    02
     readingOutdated:
     requestReadings:
       get01:
         01_href    reading 332
         01_rep_if_0 reading 134
         01_rep_openLevel reading 140
         01_rep_range_0 reading 328
         01_rep_range_1 reading 310
         01_rep_rt_0 reading 143
         01_rep_step reading 295
         02_href    reading 300
         02_rep_if_0 reading 108
         02_rep_n   reading 202
         02_rep_rt_0 reading 124
         02_rep_wiserone.room reading 117
         03_href    reading 135
         03_rep_action reading 128
         03_rep_if_0 reading 331
         03_rep_if_1 reading 121
         03_rep_rt_0 reading 336
         04_href    reading 105
         04_rep_if_0 reading 296
         04_rep_openLevel reading 316
         04_rep_range_0 reading 100
         04_rep_range_1 reading 145
         04_rep_rt_0 reading 304
         04_rep_step reading 136
         05_href    reading 301
         05_rep_if_0 reading 107
         05_rep_n   reading 205
         05_rep_rt_0 reading 126
         05_rep_wiserone.room reading 120
         06_href    reading 313
         06_rep_action reading 318
         06_rep_if_0 reading 116
         06_rep_if_1 reading 327
         06_rep_rt_0 reading 102
         07_href    reading 199
         07_rep_if_0 reading 261
         07_rep_openLevel reading 277
         07_rep_range_0 reading 189
         07_rep_range_1 reading 169
         07_rep_rt_0 reading 288
         07_rep_step reading 149
         08_href    reading 113
         08_rep_if_0 reading 308
         08_rep_n   reading 259
         08_rep_rt_0 reading 294
         08_rep_wiserone.room reading 303
         09_href    reading 309
         09_rep_action reading 321
         09_rep_if_0 reading 112
         09_rep_if_1 reading 324
         09_rep_rt_0 reading 106
         10_href    reading 320
         10_rep_if_0 reading 122
         10_rep_openLevel reading 101
         10_rep_range_0 reading 317
         10_rep_range_1 reading 326
         10_rep_rt_0 reading 110
         10_rep_step reading 334
         11_href    reading 223
         11_rep_if_0 reading 154
         11_rep_n   reading 144
         11_rep_rt_0 reading 166
         11_rep_wiserone.room reading 175
         12_href    reading 255
         12_rep_action reading 263
         12_rep_if_0 reading 182
         12_rep_if_1 reading 239
         12_rep_rt_0 reading 210
         13_href    reading 151
         13_rep_if_0 reading 225
         13_rep_openLevel reading 247
         13_rep_range_0 reading 146
         13_rep_range_1 reading 219
         13_rep_rt_0 reading 241
         13_rep_step reading 193
         14_href    reading 200
         14_rep_if_0 reading 260
         14_rep_n   reading 314
         14_rep_rt_0 reading 287
         14_rep_wiserone.room reading 276
         15_href    reading 252
         15_rep_action reading 262
         15_rep_if_0 reading 183
         15_rep_if_1 reading 240
         15_rep_rt_0 reading 206
         16_href    reading 290
         16_rep_if_0 reading 220
         16_rep_openLevel reading 180
         16_rep_range_0 reading 285
         16_rep_range_1 reading 226
         16_rep_rt_0 reading 188
         16_rep_step reading 245
         17_href    reading 104
         17_rep_if_0 reading 297
         17_rep_n   reading 291
         17_rep_rt_0 reading 305
         17_rep_wiserone.room reading 315
         18_href    reading 218
         18_rep_action reading 211
         18_rep_if_0 reading 281
         18_rep_if_1 reading 160
         18_rep_rt_0 reading 269
         19_href    reading 282
         19_rep_if_0 reading 215
         19_rep_openLevel reading 185
         19_rep_range_0 reading 292
         19_rep_range_1 reading 222
         19_rep_rt_0 reading 192
         19_rep_step reading 242
         20_href    reading 333
         20_rep_if_0 reading 142
         20_rep_n   reading 163
         20_rep_rt_0 reading 127
         20_rep_wiserone.room reading 132
         21_href    reading 267
         21_rep_action reading 256
         21_rep_if_0 reading 195
         21_rep_if_1 reading 249
         21_rep_rt_0 reading 217
         22_href    reading 229
         22_rep_if_0 reading 159
         22_rep_openLevel reading 170
         22_rep_range_0 reading 233
         22_rep_range_1 reading 270
         22_rep_rt_0 reading 177
         22_rep_step reading 250
         23_href    reading 198
         23_rep_if_0 reading 264
         23_rep_n   reading 311
         23_rep_rt_0 reading 283
         23_rep_wiserone.room reading 274
         24_href    reading 148
         24_rep_action reading 157
         24_rep_if_0 reading 228
         24_rep_if_1 reading 209
         24_rep_rt_0 reading 238
         25_href    reading 231
         25_rep_if_0 reading 156
         25_rep_openLevel reading 174
         25_rep_range_0 reading 236
         25_rep_range_1 reading 272
         25_rep_rt_0 reading 178
         25_rep_step reading 254
         26_href    reading 246
         26_rep_if_0 reading 168
         26_rep_n   reading 137
         26_rep_rt_0 reading 147
         26_rep_wiserone.room reading 162
         27_href    reading 138
         27_rep_action reading 131
         27_rep_if_0 reading 330
         27_rep_if_1 reading 123
         27_rep_rt_0 reading 337
         28_href    reading 167
         28_rep_if_0 reading 243
         28_rep_openLevel reading 234
         28_rep_range_0 reading 171
         28_rep_range_1 reading 190
         28_rep_rt_0 reading 224
         28_rep_step reading 213
         29_href    reading 244
         29_rep_if_0 reading 165
         29_rep_n   reading 133
         29_rep_rt_0 reading 152
         29_rep_wiserone.room reading 164
         30_href    reading 306
         30_rep_action reading 319
         30_rep_if_0 reading 114
         30_rep_if_1 reading 323
         30_rep_rt_0 reading 103
         31_href    reading 232
         31_rep_if_0 reading 155
         31_rep_openLevel reading 173
         31_rep_range_0 reading 235
         31_rep_range_1 reading 273
         31_rep_rt_0 reading 179
         31_rep_step reading 253
         32_href    reading 265
         32_rep_if_0 reading 196
         32_rep_n   reading 118
         32_rep_rt_0 reading 214
         32_rep_wiserone.room reading 203
         33_href    reading 158
         33_rep_action reading 150
         33_rep_if_0 reading 230
         33_rep_if_1 reading 212
         33_rep_rt_0 reading 248
         34_href    reading 181
         34_rep_if_0 reading 257
         34_rep_openLevel reading 289
         34_rep_range_0 reading 186
         34_rep_range_1 reading 176
         34_rep_rt_0 reading 278
         34_rep_step reading 161
         35_href    reading 268
         35_rep_if_0 reading 194
         35_rep_n   reading 119
         35_rep_rt_0 reading 216
         35_rep_wiserone.room reading 204
         36_href    reading 275
         36_rep_action reading 293
         36_rep_if_0 reading 201
         36_rep_if_1 reading 221
         36_rep_rt_0 reading 187
         37_href    reading 109
         37_rep_if_0 reading 299
         37_rep_openLevel reading 312
         37_rep_range_0 reading 111
         37_rep_range_1 reading 139
         37_rep_rt_0 reading 322
         37_rep_step reading 129
         38_href    reading 207
         38_rep_if_0 reading 280
         38_rep_n   reading 302
         38_rep_rt_0 reading 251
         38_rep_wiserone.room reading 258
         39_href    reading 279
         39_rep_action reading 286
         39_rep_if_0 reading 208
         39_rep_if_1 reading 227
         39_rep_rt_0 reading 184
         40_href    reading 197
         40_rep_if_0 reading 266
         40_rep_openLevel reading 271
         40_rep_range_0 reading 191
         40_rep_range_1 reading 172
         40_rep_rt_0 reading 284
         40_rep_step reading 153
         41_href    reading 141
         41_rep_if_0 reading 335
         41_rep_n   reading 237
         41_rep_rt_0 reading 325
         41_rep_wiserone.room reading 329
         42_href    reading 115
         42_rep_action reading 125
         42_rep_if_0 reading 307
         42_rep_if_1 reading 130
         42_rep_rt_0 reading 298
       get02:
         wlss31_    get 02
       update:
         01_href    reading 332
         01_rep_if_0 reading 134
         01_rep_openLevel reading 140
         01_rep_range_0 reading 328
         01_rep_range_1 reading 310
         01_rep_rt_0 reading 143
         01_rep_step reading 295
         02_href    reading 300
         02_rep_if_0 reading 108
         02_rep_n   reading 202
         02_rep_rt_0 reading 124
         02_rep_wiserone.room reading 117
         03_href    reading 135
         03_rep_action reading 128
         03_rep_if_0 reading 331
         03_rep_if_1 reading 121
         03_rep_rt_0 reading 336
         04_href    reading 105
         04_rep_if_0 reading 296
         04_rep_openLevel reading 316
         04_rep_range_0 reading 100
         04_rep_range_1 reading 145
         04_rep_rt_0 reading 304
         04_rep_step reading 136
         05_href    reading 301
         05_rep_if_0 reading 107
         05_rep_n   reading 205
         05_rep_rt_0 reading 126
         05_rep_wiserone.room reading 120
         06_href    reading 313
         06_rep_action reading 318
         06_rep_if_0 reading 116
         06_rep_if_1 reading 327
         06_rep_rt_0 reading 102
         07_href    reading 199
         07_rep_if_0 reading 261
         07_rep_openLevel reading 277
         07_rep_range_0 reading 189
         07_rep_range_1 reading 169
         07_rep_rt_0 reading 288
         07_rep_step reading 149
         08_href    reading 113
         08_rep_if_0 reading 308
         08_rep_n   reading 259
         08_rep_rt_0 reading 294
         08_rep_wiserone.room reading 303
         09_href    reading 309
         09_rep_action reading 321
         09_rep_if_0 reading 112
         09_rep_if_1 reading 324
         09_rep_rt_0 reading 106
         10_href    reading 320
         10_rep_if_0 reading 122
         10_rep_openLevel reading 101
         10_rep_range_0 reading 317
         10_rep_range_1 reading 326
         10_rep_rt_0 reading 110
         10_rep_step reading 334
         11_href    reading 223
         11_rep_if_0 reading 154
         11_rep_n   reading 144
         11_rep_rt_0 reading 166
         11_rep_wiserone.room reading 175
         12_href    reading 255
         12_rep_action reading 263
         12_rep_if_0 reading 182
         12_rep_if_1 reading 239
         12_rep_rt_0 reading 210
         13_href    reading 151
         13_rep_if_0 reading 225
         13_rep_openLevel reading 247
&nb
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 26 November 2021, 17:53:02
Ok, ich glaube jetzt verstehe ich das Problem.
Die Namen der Readings müssten zusammen mit den Werten aus dem JSON extrahiert werden. Oder ist die Sequenz bzw. Zuordnung von Schalter zu Nummer immer gleich?

Du könntest das jetzt natürlich Reading für Reading per Regex machen und auf den passenden Namen und den darauf folgenden Wert matchen.
Nicht sehr leserlich / elegant.

Vermutlich wird es am einfachsten sein, das per parseFunction1 mit eigenem Perl-Code einzuklinken.
Der Name der Funktion wird per Attribut gesetzt und die Funktion wird mit dem Device-Hash und dem Text der HTTP-Response aufgerufen.
Dann würde ich sequentiell durch die Einträge gehen und jeweils readingsBulkUpdate aufrufen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 06 Dezember 2021, 22:21:58
Hallo Stefan,

ein bisher gut funktionierendes Device spukt auf einmal folgende Einträge im logfile aus:
2021.12.06 21:53:16.477 3: Onvista: error in findvalues for XPathTree: Can't call method "findnodes_as_strings" on an undefined value at .//FHEM/98_HTTPMOD.pm line 1589.

Die dazugehörige URL funktioniert an und für sich, spukt aber vorher den obligatorischen Datenwarnhinweis aus - kann es daran liegen?
Welche Informationen benötigst du eventuell noch, um dir ein Bild zu machen?

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 07 Dezember 2021, 12:15:12
Zitat von: Gisbert am 06 Dezember 2021, 22:21:58
Hallo Stefan,

ein bisher gut funktionierendes Device spukt auf einmal folgende Einträge im logfile aus:
2021.12.06 21:53:16.477 3: Onvista: error in findvalues for XPathTree: Can't call method "findnodes_as_strings" on an undefined value at .//FHEM/98_HTTPMOD.pm line 1589.

Die dazugehörige URL funktioniert an und für sich, spukt aber vorher den obligatorischen Datenwarnhinweis aus - kann es daran liegen?
Welche Informationen benötigst du eventuell noch, um dir ein Bild zu machen?
Hallo Gisbert,
ich denke ein verbose 5 Log wäre ein super Anfang, da sieht man dann was vom Device kommt und wie es gescannt wird.
VG Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Dezember 2021, 19:58:23
Hallo Gisbert,

werden denn noch Readings aktualisiert oder kommt die Meldung bei jedem Request?
Ich würde ja vermuten, dass davor schon ein Timeout oder ein anderer Fehler kommt und dass die Meldung nur eine Folge davon ist, dass keine Daten gelesen werden konnten, aber um das mit Gewissheit sagen zu können, wäre ein längerer Auszug aus dem Log bei verbose 5 (wie von Christian korrekterweise empfohlen) nötig.
Dazu wäre Deine Konfiguration sehr hilfreich.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 07 Dezember 2021, 20:34:54
Hallo Stefan,
hallo Christian,

hier ist ein log-Auszug beim Befehl "get Onvista Gold" (es handelt sich um einen Gold-ETF):
2021.12.07 20:24:06.297 5: Onvista: get called with Gold
2021.12.07 20:24:06.298 5: Onvista: get found option Gold in attribute get03Name
2021.12.07 20:24:06.298 4: Onvista: get will now request Gold, no optional value
2021.12.07 20:24:06.300 5: Onvista: AddToQueue adds type get03 to URL https://www.onvista.de/derivate/etc-etn/XETRA-GOLD-DE000A0S9GB0, no data, no headers, retry 0, initial queue len: 0
2021.12.07 20:24:06.300 5: Onvista: HandleSendQueue called from AddToSendQueue, qlen = 1
2021.12.07 20:24:06.300 4: Onvista: HandleSendQueue sends get03 with timeout 10 to https://www.onvista.de/derivate/etc-etn/XETRA-GOLD-DE000A0S9GB0, No Data, No Header
2021.12.07 20:24:06.607 5: Onvista: ReadCallback called from __ANON__
2021.12.07 20:24:06.607 4: Onvista: Read callback: request type was get03 retry 0,
header: HTTP/1.1 308 Permanent Redirect
Server: nginx
Date: Tue, 07 Dec 2021 19:24:06 GMT
Content-Length: 0
Connection: close
x-matched-path: /derivate/[...index]
cache-control: max-age=86400, public
refresh: 0;url=/derivate/ETCs/18869269-A0S9GB-DE000A0S9GB0
location: /derivate/ETCs/18869269-A0S9GB-DE000A0S9GB0
x-vercel-cache: HIT
age: 25850
x-vercel-id: fra1::fra1::nqf25-1638905046430-87b250757190
strict-transport-security: max-age=63072000, no body
2021.12.07 20:24:06.607 5: Onvista: Read callback: body empty
2021.12.07 20:24:06.608 4: Onvista: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2021.12.07 20:24:06.608 5: Onvista: GetCookies is looking for Cookies
2021.12.07 20:24:06.608 5: Onvista: ExtractSid called, context get, num 03
2021.12.07 20:24:06.608 4: Onvista: checking for redirects, code=308, ignore=0
2021.12.07 20:24:06.608 4: Onvista: no redirects to handle
2021.12.07 20:24:06.608 5: Onvista: Read callback sets LAST_REQUEST to get03
2021.12.07 20:24:06.609 5: Onvista: CheckAuth decided no authentication required
2021.12.07 20:24:06.609 5: Onvista: ExtractReading Gold with XPath //h3[contains(.,"Geld")]/../div[contains(.,"EUR")]/span[contains(.,"EUR")]
2021.12.07 20:24:06.609 3: Onvista: error in findvalues for XPathTree: Can't call method "findnodes_as_strings" on an undefined value at .//FHEM/98_HTTPMOD.pm line 1589.

2021.12.07 20:24:06.609 5: Onvista: ExtractReading Gold did not match
2021.12.07 20:24:06.610 4: Onvista: Read response to get03 didn't match any Reading
2021.12.07 20:24:06.662 5: Onvista: HandleSendQueue called from ReadCallback, qlen = 0
2021.12.07 20:24:06.662 5: Onvista: HandleSendQueue found no usable entry in queue


Auszug aus meiner Definition (nur der relevante Part, der nicht funktionierte; andere Abfragen auf einer anderen Seite laufen nach wie vor).
Letztes Reading zu dieser Abfrage: 2021-11-30 16:13:15
defmod Onvista HTTPMOD <IP-Adresse einer anderen Seite, die funktioniert> 1200
attr Onvista enableControlSet 1
attr Onvista event-min-interval .*:15
...
attr Onvista get03Name Gold
attr Onvista get03OExpr $val =~ s/\.//g;; $val =~s/\,/./g;; $val =~s/EUR//g;; $val =~s/\s+$//;; $val
attr Onvista get03Poll 1
attr Onvista get03URL https://www.onvista.de/derivate/etc-etn/XETRA-GOLD-DE000A0S9GB0
attr Onvista get03XPath //h3[contains(.,"Geld")]/../div[contains(.,"EUR")]/span[contains(.,"EUR")]
...


Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Dezember 2021, 21:20:17
Hallo Gisbert,

die Seite ist umgezogen und meldet das leider mitt status code 308 statt 301,302 oder 303.
Das ist in den HttpUtils und HTTPMOD nicht implementiert.
Kurzfristig kannst Du einfach Deine Konfiguration anpassen. Die neue URL findest Du im Log.
Unabhängig davon sollte HttpUtils und HTTPMOD erweitert werden, so dass auch 308 erkannt wird.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 07 Dezember 2021, 21:37:59
Zitat von: StefanStrobel am 07 Dezember 2021, 21:20:17
Hallo Gisbert,

die Seite ist umgezogen und meldet das leider mitt status code 308 statt 301,302 oder 303.
Das ist in den HttpUtils und HTTPMOD nicht implementiert.
Kurzfristig kannst Du einfach Deine Konfiguration anpassen. Die neue URL findest Du im Log.
Unabhängig davon sollte HttpUtils und HTTPMOD erweitert werden, so dass auch 308 erkannt wird.

Gruß
    Stefan

Hallo Stefan,

ich hab die veränderte URL eingetragen, bekomme aber immer noch keinen Wert rein. Heißt das, dass diese Seite prinzipiell von Fhem HTTPMOD in der jetzigen Fassung nicht auszuwerten ist?

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 Dezember 2021, 21:53:37
Hallo Gisbert,

vielleicht hat sich nicht nur die URL geändert.
Das müsste man genauer ansehen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rudolfkoenig am 08 Dezember 2021, 10:40:57
Zitatdie Seite ist umgezogen und meldet das leider mitt status code 308 statt 301,302 oder 303.
Das ist in den HttpUtils und HTTPMOD nicht implementiert.
Ich habe 308 in HttpUtils zu der Liste der Redirect-Codes hinzugefuegt, aber ohne eine spezielle Behandlung.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 08 Dezember 2021, 19:34:10
@Rudi: Vielen Dank!

@Gisbert: ich habe es gerade mal angesehen und da kommen sehr viele Daten zurück, aber vermutlich ist die Struktur eine neue. Du musst also auch die xpath-Abfrage anpassen. Da bin ich aber nicht der Spezialist.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 08 Dezember 2021, 19:49:56
Hallo Stefan,

vielen Dank für deine Unterstützung. Ich bin zu der gleichen Einschätzung gekommen und habe die Konsequenz gezogen diese Abfrage ganz sein zu lassen, da ich nicht wirklich einen Plan habe, diese Daten aus der Seite herauszubekommen.
Für Finanzdaten gibt es spezialisierte Tools; man muss vielleicht nicht versuchen, alles mit FHEM lösen zu wollen.

Viele​ Grüße​ Gisbert​
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gestein am 09 Dezember 2021, 09:12:46
Hallo,

Mal eine allgemeine Frage: Wie kann ich mit HTTPMOD feststellen, ob eine Seite offline ist?

Bis jetzt lasse ich mir mit dem Attribut "showError" den letzten Fehler anzeigen und suche darin nach dem Text "timed out".
Da aber das Reading nicht gelöscht wird, wenn kein Fehler mehr auftritt, muss ich auch noch die Zeitstempel vergleichen.
Gibt es ein neueres Reading (hier das Reading "mode"), dann wird der Inhalt von "mode" angezeigt.

Bei mir sieht das dann so aus:
stateFormat
{my $err=ReadingsVal($name,"LAST_ERROR",""); (($err =~ "timed out")&&(ReadingsTimestamp($name,"mode",0) lt ReadingsTimestamp($name,"LAST_ERROR",0)))? "offline":ReadingsVal($name,"mode","Error");}


Gibt es dafür nicht eine allgemeinere, einfachere Methode?

Danke im Voraus
lg, Gerhard
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Dezember 2021, 18:25:27
Halo Gerhard,

da gibt es mehrere Möglichkeiten:
Zitat
get|reading[0-9]*DeleteOnError
    If set to 1 this attribute causes certain readings to be deleted when the website can not be reached and the HTTP request returns an error.
    Internally HTTPMOD remembers which kind of operation created a reading (update, Get01, Get02 and so on). Specified readings will only be
    deleted if the same operation returns an error.

oder (nicht ganz so passend) auch
Zitat
get|reading[0-9]*MaxAge
    Defines how long a reading is valid before it is automatically overwritten with a replacement when the read function is called the next time.
get|reading[0-9]*MaxAgeReplacement
    specifies the replacement for MaxAge - either as a static text or as a perl expression.
get|reading[0-9]*MaxAgeReplacementMode
    specifies how the replacement is interpreted: can be text, expression and delete.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gestein am 13 Dezember 2021, 22:26:39
Hallo Stefan,

ich hatte das mit dem Alter eines Readings versucht, aber es klappt nicht so wie gewünscht.
In meinem Device wird das Reading mode zyklisch upgedatet.
Wenn das Device offline ist, soll dort "offline" stehen.

Also habe ich folgendes definiert:
attr Twinkly_icicle_144 reading01MaxAge 120
attr Twinkly_icicle_144 reading01MaxAgeReplacement offline
attr Twinkly_icicle_144 reading01MaxAgeReplacementMode text
attr Twinkly_icicle_144 reading01Name mode


Aber das klappt nicht.

Danke im Voraus
lg, Gerhard
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Sailor am 14 Dezember 2021, 09:12:05
Moin zusammen

Ich habe mir fuer meine Tide ein HTTPMOD zusammengestellt was auch sehr gut funktioniert:


Internals:
   BUSY       0
   CFGFN      ./cfg/Room_OS.cfg
   DEF        http://exnatura.de:9099/locations/4073.html 21600
   FUUID      5c4993d2-f33f-02bc-ffab-7b6f3463287b4127
   Interval   21600
   MainURL    http://exnatura.de:9099/locations/4073.html
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       OS_Tide_Stadersand
   NOTIFYDEV  global
   NR         2943
   NTFY_ORDER 50-OS_Tide_Stadersand
   STATE      LW: 14.12.2021 18:58 CET   0.79 HW: 14.12.2021 12:06 CET   3.68
   TYPE       HTTPMOD
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://exnatura.de:9099
     auth       0
     code       200
     compress   1
     conn       
     data       
     displayurl http://exnatura.de:9099/locations/4073.html
     header     
     host       exnatura.de
     httpheader HTTP/1.0 200 OK
MIME-version: 1.0
Content-type: text/html
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    9099
     hu_portSfx :9099
     ignoreredirects 1
     loglevel   4
     path       /locations/4073.html
     protocol   http
     redirects  0
     timeout    10
     url        http://exnatura.de:9099/locations/4073.html
     sslargs:
   QUEUE:
   READINGS:
     2021-12-14 09:00:57   High_Tide-1     14.12.2021 12:06 CET   3.68
     2021-12-14 09:00:57   High_Tide-2     

     2021-12-14 09:00:57   Low_Tide-1      14.12.2021 18:58 CET   0.79
     2021-12-14 09:00:57   Low_Tide-2     

   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        http://exnatura.de:9099/locations/4073.html
   defptr:
     readingBase:
       High_Tide-1 reading
       High_Tide-2 reading
       Low_Tide-1 reading
       Low_Tide-2 reading
     readingNum:
       High_Tide-1 02
       High_Tide-2 02
       Low_Tide-1 01
       Low_Tide-2 01
     readingOutdated:
     readingSubNum:
       High_Tide-1 -1
       High_Tide-2 -2
       Low_Tide-1 -1
       Low_Tide-2 -2
     requestReadings:
       update:
         High_Tide-1 reading 02-1
         High_Tide-2 reading 02-2
         Low_Tide-1 reading 01-1
         Low_Tide-2 reading 01-2
Attributes:
   DbLogExclude .*
   alias      Tide Stadersand
   enableControlSet 1
   icon       scene_swimming
   reading01Name Low_Tide
   reading01Regex ((?:\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}.* \d{1}.\d{2})(?=.*Niedrigwasser(\n|$)))
   reading02Name High_Tide
   reading02Regex ((?:\d{2}\.\d{2}\.\d{4} \d{2}:\d{2}.* \d{1}.\d{2})(?=.*Hochwasser(\n|$)))
   room       Outside
   stateFormat LW: Low_Tide-1 HW: High_Tide-1
   timeout    10
   userattr   


Die Ausgabe lautet:
14.12.2021 12:06 CET   3.68

Meine Frage ist: Wie bekomme ich das 1. und 3. Leerzeichen in "<BR>" ersetzt?
14.12.2021<BR>12:06 CET<BR>3.68

Das hat zur Folge, dass es im Browser als
Zitat14.12.2021
12:06 CET
3.68
dargestellt wird.

Ich bin mir sicher, das eines der vielen Attribute mir dies erlauben, aber ich habe nur noch keinen Durchblick welches...

Danke

Gruss
    Sailor
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 Dezember 2021, 17:50:02
Hallo Gerhard,

MaxAge wird nur beim nächsten zyklischen Request verarbeitet. Es hat keinen eigenen Timer.
Erklärt es das?

Gruss
  Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 Dezember 2021, 17:52:15
Hallo Sailor,

das würde ich mit einer Perl-Expression machen.
reading01Expr ...
Da dann eine passende Regex Ersetzung.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: gestein am 14 Dezember 2021, 21:26:41
Hallo Stefan,

Ja, das würde das erklären.

Aber ich habe im DEF des Devices folgendes:
defmod Twinkly_icicle_144 HTTPMOD http://192.168.0.144/xled/v1/led/mode 120

Und damit sollte es doch gehen.
Gerade eben probiert.
Das Device vom Netz genommen.
2min später wird LAST_ERROR gesetzt, aber nicht das Reading mode.

Oder habe ich da was übersehen?
Danke im Voraus
Lg, Gerhard

Hier noch ein list des Devices:
Internals:
   BUSY       0
   DEF        http://192.168.0.144/xled/v1/led/mode 120
   FUUID      61b3c75a-f33f-7e14-24ce-2fd106acddd5228a
   FVERSION   98_HTTPMOD.pm:0.247080/2021-07-06
   Interval   120
   LastAuthTry 2021-12-14 20:32:33
   MainURL    http://192.168.0.144/xled/v1/led/mode
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       Twinkly_icicle_144
   NOTIFYDEV  global
   NR         4423
   NTFY_ORDER 50-Twinkly_icicle_144
   STATE      effect
   TYPE       HTTPMOD
   httpbody   
   sid        Pb+Pjj+8Lao=
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.0.144:80
     auth       0
     data       
     displayurl http://192.168.0.144/xled/v1/led/mode
     header     X-Auth-Token: Pb+Pjj+8Lao=
     host       192.168.0.144
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /xled/v1/led/mode
     protocol   http
     redirects  0
     timeout    2
     url        http://192.168.0.144/xled/v1/led/mode
     sslargs:
   QUEUE:
   READINGS:
     2021-12-14 21:18:36   LAST_ERROR      connect to http://192.168.0.144:80 timed out
     2021-12-14 20:28:25   bytes_per_led   4
     2021-12-14 21:16:36   code            1000
     2021-12-14 05:58:39   color_config_blue 0
     2021-12-14 05:58:39   color_config_green 0
     2021-12-14 05:58:39   color_config_hue 0
     2021-12-14 05:58:39   color_config_red 0
     2021-12-14 05:58:39   color_config_saturation 0
     2021-12-14 05:58:39   color_config_value 0
     2021-12-14 05:58:39   color_config_white 255
     2021-12-14 20:28:25   copyright       LEDWORKS 2021
     2021-12-14 20:28:25   device_name     Twinkly_41FB2D
     2021-12-10 23:02:41   effects_number  5
     2021-12-14 20:28:25   flash_size      64
     2021-12-14 20:28:25   frame_rate      24
     2021-12-14 20:28:25   fw_family       G
     2021-12-14 20:28:25   hardware_version 302
     2021-12-14 20:28:25   hw_id           41fb2c
     2021-12-14 20:28:25   led_profile     RGBW
     2021-12-14 20:28:25   led_type        12
     2021-12-14 20:28:25   mac             98:cd:ac:41:fb:2d
     2021-12-14 20:28:25   max_supported_led 510
     2021-12-14 20:28:25   measured_frame_rate 28.57
     2021-12-14 21:16:36   mode            effect
     2021-12-14 20:28:25   movie_capacity  5285
     2021-12-14 20:28:25   number_of_led   190
     2021-12-10 23:23:07   preset_id       1
     2021-12-14 20:28:25   product_code    TWI190SPP
     2021-12-14 20:28:25   product_name    Twinkly
     2021-12-14 21:16:36   shop_mode       0
     2021-12-10 23:23:07   unique_id       00000000-0000-0000-0000-000000000002
     2021-12-10 23:02:41   unique_ids_0    00000000-0000-0000-0000-000000000001
     2021-12-10 23:02:41   unique_ids_1    00000000-0000-0000-0000-000000000002
     2021-12-10 23:02:41   unique_ids_2    00000000-0000-0000-0000-000000000003
     2021-12-10 23:02:41   unique_ids_3    00000000-0000-0000-0000-000000000004
     2021-12-10 23:02:41   unique_ids_4    00000000-0000-0000-0000-000000000005
     2021-12-14 20:28:25   uptime          17475487
     2021-12-14 20:28:25   uuid            BD8A63F3-2E83-46F0-AA49-7742948025E6
     2021-12-14 20:28:25   wire_type       4
   REQUEST:
     context    reading
     data       
     header     X-Auth-Token: $sid
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        http://192.168.0.144/xled/v1/led/mode
   defptr:
     readingBase:
       bytes_per_led get
       code       reading
       color_config_blue reading
       color_config_green reading
       color_config_hue reading
       color_config_red reading
       color_config_saturation reading
       color_config_value reading
       color_config_white reading
       copyright  get
       device_name get
       flash_size get
       frame_rate get
       fw_family  get
       hardware_version get
       hw_id      get
       led_profile get
       led_type   get
       mac        get
       max_supported_led get
       measured_frame_rate get
       mode       reading
       movie_capacity get
       number_of_led get
       product_code get
       product_name get
       shop_mode  reading
       uptime     get
       uuid       get
       wire_type  get
     readingNum:
       bytes_per_led 01
       code       unknown
       color_config_blue unknown
       color_config_green unknown
       color_config_hue unknown
       color_config_red unknown
       color_config_saturation unknown
       color_config_value unknown
       color_config_white unknown
       copyright  01
       device_name 01
       flash_size 01
       frame_rate 01
       fw_family  01
       hardware_version 01
       hw_id      01
       led_profile 01
       led_type   01
       mac        01
       max_supported_led 01
       measured_frame_rate 01
       mode       unknown
       movie_capacity 01
       number_of_led 01
       product_code 01
       product_name 01
       shop_mode  unknown
       uptime     01
       uuid       01
       wire_type  01
     readingOutdated:
     readingSubNum:
     requestReadings:
       get01:
         bytes_per_led get 01
         code       get 01
         copyright  get 01
         device_name get 01
         flash_size get 01
         frame_rate get 01
         fw_family  get 01
         hardware_version get 01
         hw_id      get 01
         led_profile get 01
         led_type   get 01
         mac        get 01
         max_supported_led get 01
         measured_frame_rate get 01
         movie_capacity get 01
         number_of_led get 01
         product_code get 01
         product_name get 01
         uptime     get 01
         uuid       get 01
         wire_type  get 01
       set01:
         code       set 01
         mode       set 01
       update:
         code       reading unknown
         color_config_blue reading unknown
         color_config_green reading unknown
         color_config_hue reading unknown
         color_config_red reading unknown
         color_config_saturation reading unknown
         color_config_value reading unknown
         color_config_white reading unknown
         mode       reading unknown
         shop_mode  reading unknown
   helper:
     bm:
       CODE(0x398a9b0):
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        13.12. 13:32:31
         max        0.00277400016784668
         tot        0.00277400016784668
         mAr:
           HASH(0xa59ea78)
           Twinkly_icicle_144 HTTPMOD http://192.168.0.144/xled/v1/led/mode 120
       CODE(0x398ab78):
         cnt        26
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        13.12. 23:38:00
         max        3.29017639160156e-05
         tot        0.00024724006652832
         mAr:
           HASH(0xa59ea78)
           HASH(0x1d75a68)
       CODE(0x3a4bc28):
         cnt        17
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        13.12. 13:32:50
         max        0.0157580375671387
         tot        0.0852327346801758
         mAr:
           set
           Twinkly_icicle_144
           reading01MaxAge
           120
       CODE(0x3b10a50):
         cnt        385
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        13.12. 21:47:06
         max        0.00991296768188477
         tot        0.279318809509277
         mAr:
           HASH(0xa59ea78)
           Twinkly_icicle_144
           mode
           effect
       CODE(0x3b25858):
         cnt        39
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        13.12. 13:25:38
         max        0.00928401947021484
         tot        0.0214970111846924
         mAr:
           HASH(0xa59ea78)
           Twinkly_icicle_144
           Gestalt
   lastpoll:
     Gestalt    1639510104.23615
Attributes:
   comment    https://forum.fhem.de/index.php/topic,93197.msg1004834.html#msg1004834
   devStateIcon off:general_aus movie|demo:general_an rt:rc_SETUP
   enableControlSet 1
   event-on-change-reading .*
   eventMap   /mode off:aus/mode color:an/
   extractAllJSON 1
   get01Name  Gestalt
   get01Poll  1
   get01PollDelay 3600
   get01URL   http://192.168.0.144/xled/v1/gestalt
   get02Header1 Content-Type: application/json
   get02Header2 X-Auth-Token: $sid
   get02Name  MQTT
   get02URL   http://192.168.0.144/xled/v1/mqtt/config
   get03Header1 Content-Type: application/json
   get03Header2 X-Auth-Token: $sid
   get03Name  LED-Effects
   get03URL   http://192.168.0.144/xled/v1/led/effects
   get04Header1 Content-Type: application/json
   get04Header2 X-Auth-Token: $sid
   get04Name  LED-Effect_current
   get04URL   http://192.168.0.144/xled/v1/led/effects/current
   group      Twinkly
   icon       christmas_lights
   reAuthRegex Invalid.Token
   reading01MaxAge 120
   reading01MaxAgeReplacement offline
   reading01MaxAgeReplacementMode text
   reading01Name mode
   replacement01Mode expression
   replacement01Regex %%mode%%
   requestHeader01 X-Auth-Token: $sid
   room       Weihnachten,0_Testing
   set01Data  {%%mode%%}
   set01Hint  off,color,demo,effect,movie,playlist,rt
   set01Name  mode
   set01Replacement01Value {my $value = InternalVal($name, "value", "");
my $ret = "\"mode\":\"$value\""; ##{"mode":"$val"%%effect%%}

if ($value eq "effect") {
$ret .= ",\"effect_id\":".ReadingsVal($name,"preset_id","0");
}
return $ret;
}
   set01TextArg 1
   set01URL   http://192.168.0.144/xled/v1/led/mode
   set02Data  {"broker_host":"node02.myqtthub.com","broker_port":8883,"client_id":"E8DB840EDCA1","user":"steiner","keep_alive_interval":60}
   set02Name  set_MQTT
   set02TextArg 1
   set02URL   http://192.168.0.144/xled/v1/mqtt/config
   set03Data  {"mode":"node02.myqtthub.com"}
   set03Name  set_Mode
   set03TextArg 1
   set03URL   http://192.168.0.144/xled/v1/led/mode
   setHeader1 Content-Type: application/json
   setHeader2 X-Auth-Token: $sid
   setParseResponse 1
   showBody   1
   showError  1
   sid01Data  {"challenge": "AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8="}
   sid01IdJSON authentication_token
   sid01URL   http://192.168.0.144/xled/v1/login
   sid02Header X-Auth-Token: $sid
   sid02URL   http://192.168.0.144/xled/v1/verify
   sidHeader1 Content-Type: application/json
   stateFormat mode
   userattr   get01PollDelay:0,1 sid02Data sid2Header sidHeader2
   webCmd     an:aus

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Sailor am 15 Dezember 2021, 14:31:56
Hallo Stefan

Zitat von: StefanStrobel am 14 Dezember 2021, 17:52:15
das würde ich mit einer Perl-Expression machen.
reading01Expr ...
Da dann eine passende Regex Ersetzung.

Also attr OS_Tide_Stadesand reading01Expr s/ /<BR>/ funktioniert leider nicht.
(""Space" soll durch "<BR>" ersetzt werden.

Das Reading wird leer.

Gruß
    Sailor
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 Dezember 2021, 21:06:37
Hallo Sailor,

das Ergebnis Deiner Expression wird als Wert verwendet.
So wie Du es angegeben hast, kann es also nicht klappen. s/ /<BR>/ alleine gibt keinen sinnvoll Wert zurück.
Probier doch mal so was wie

$val =~ s/ /<br>/g; $val

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Sailor am 27 Dezember 2021, 13:02:55
Hallo Stefan

Zitat von: StefanStrobel am 21 Dezember 2021, 21:06:37
Probier doch mal so was wie

Das hat hingehauen!


$val =~ s/ +/<br>/g;
$val =~ s/<br>CET/ CET/g;
$val



HW: 27.12.2021
21:24 CET
3.35


Danke

   Gruß
        Sailor
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 25 Januar 2022, 17:23:40
Hallo zusammen,

Beim ModBus habe ich bereits den userreadings modifier monotonic verwendet.
Hier im HTTPMOD bekomme ich dazu jedoch eine Fehlermeldung.

Für den ersten Test wollte ich es dann so einbauen, jedoch scheint die Funktion monotonic im HTTPMOD Modul nicht integriert zu sein.
Kann ich das noch anders aufrufen?

SW_Statistic_Yield_Total_test:SW_Statistic_Yield_Total.* monotonic {round(ReadingsVal("$NAME","Statistic_Yield_Total",0)+ReadingsVal("WR_2_API","Statistic_Yield_Total",0),0)},

Error evaluating WR_1_API userReading SW_Statistic_Yield_Total_test: Undefined subroutine &main::monotonic called at (eval 2244259) line 1.


VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 25 Januar 2022, 17:50:07
Hallo Christian,

monotonic ist weder im Modbus-Modul noch in HTTPMOD integriert. Die Userreadings sollten unabhängig vom Modul sein.
Eigentlich sollte das Problem anderswo zu suchen sein.
Vielleicht kann jemand anders da helfen?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 25 Januar 2022, 18:01:17
Zitat von: StefanStrobel am 25 Januar 2022, 17:50:07
Hallo Christian,

monotonic ist weder im Modbus-Modul noch in HTTPMOD integriert. Die Userreadings sollten unabhängig vom Modul sein.
Eigentlich sollte das Problem anderswo zu suchen sein.
Vielleicht kann jemand anders da helfen?

Gruss
   Stefan
Oh, dann muss ich woanders suchen.

EDIT: Das hat sich erledigt, ich hatte mich etwas beim Testen verrant. Es läuft doch.

Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: FhemPiUser am 27 Januar 2022, 15:50:02
Hallo Zusammen,
ich habe eine Frage zu HTTPMOD: Kann man damit auch Formularfelder ausfüllen bzw. Cookies setzen?
Beispiel: Ich möchte gerne den aktuellen Stromtarif von Vattenfall als Reading haben. Die Webseite https://www.vattenfall.de/stromtarife (https://www.vattenfall.de/stromtarife) benötigt aber einmalig die Eingabe von PLZ und Verbrauch, was dann als Cookie gespeichert wird, bevor man den Tarif sieht. Gibt es da eine Möglichkeit mit HTTPMOD?
Danke
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: t1me2die am 29 Januar 2022, 14:35:41
Moin zusammen,

in der Vergangenheit habe ich gerne aus dem Internals meiner HTTPMOD Devices den "httpheader" verwendet um auf einem Blick zu sehen, wie der HTTP Code war und ob es ggf. Fehler gab.
Gibt es dieses Internal nicht mehr?

Gruß
Mathze

@Edit: Antwort gefunden unter: https://forum.fhem.de/index.php/topic,45176.msg1095872.html#msg1095872
Hab nun meinen Code diesbezüglich umgebaut.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: l-j-silver am 06 März 2022, 21:59:53
Hallo Zusammen,

ich versuche seit einiger Zeit die Daten meiner Heizung (JSON) mit diesen Modul HTTPMOD auszulesen.

Dabei sehe ich im Log immer folgende Meldung (Ausgabe ist gekürzt):

2022.03.06 21:50:18 4: Pelletronic: Read callback: request type was update retry 0,
header: HTTP/1.1 200 OK
Connection: close
Date: Sun, 6 Mar 2022 20:50:21 GMT
Content-length: 2563, body length 2563
2022.03.06 21:50:18 5: Pelletronic: Read callback: body

"hk1":{
  "L_roomtemp_act":0,
  "name":"Heizk�rper",
  "oekomode":0,
  "autocomfort":-1,
  "autocomfort_sunset":0,
  "autocomfort_sunrise":0
},
"ww1":{
  "L_statetext":"Zeit au�erhalb Zeitprogramm|Anforderung Aus",
},
   "error":{
   }
}

2022.03.06 21:50:18 4: Pelletronic: BodyDecode is not decoding the response body (charset not found, bodyDecode set to none)
2022.03.06 21:50:18 4: Pelletronic: error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 433 (before "\x{fffd}r", \n  "oek...") at lib/FHEM/HTTPMOD/Utils.pm line 678.



Hier noch der Code wie ich die Heizung eingebunden habe:

define Pelletronic HTTPMOD http://192.168.0.15:4321/XXXX/all
setuuid Pelletronic 622517fa-f33f-5730-d6ed-c470d534fd6ade04
attr Pelletronic bodyDecode none
attr Pelletronic reading01JSON pu1_L_tpo_act
attr Pelletronic reading01Name PufferOben
attr Pelletronic reading01OExpr $val/10
attr Pelletronic reading02JSON pu1_L_tpm_act
attr Pelletronic reading02Name PufferMitte
attr Pelletronic reading02OExpr $val/10
attr Pelletronic reading03JSON pe1_L_temp_act
attr Pelletronic reading03Name Kesseltemperatur
attr Pelletronic reading03OExpr $val/10
attr Pelletronic room Heizraum
attr Pelletronic verbose 5


Bei einigen scheint es wohl zu klappen, aber ich habe verm. Probleme mit den Umlauten.

Kann mir jemand ein Tipp geben, wie ich das Problem lösen kann?

Vielen Dank.

Grüße Toni
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Der_Matze am 10 März 2022, 19:22:11
Hallo Toni,
ich habe den Code von HTTPMOD/Utils.pm etwas erweitert, da meine Enthärtungsanlage auch mit Umlauten antwortet.
Zeile 33 um 'encode_utf8' erweitert

use Encode          qw(decode encode encode_utf8);

Zeile 678

my $decoded = eval { decode_json(encode_utf8($buffer)) };

Dann klappts auch mit den Umlauten.

Gruß
Matze
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 März 2022, 19:20:49
Hallo Matze und Toni,

dafür gibt es in HTTPMOD bereits diverse Attribute:
Zitat
(get|set|reading)[0-9]*Decode
            defines an encoding to be used in a call to the perl function decode to convert the raw data string read from the device to a reading.
            This can be used if the device delivers strings in an encoding like cp850 instead of utf8.
            If your reading values contain Umlauts and they are shown as strange looking icons then you probably need to use this feature.
            Using this attribute for a set command only makes sense if you want to parse the HTTP response to the HTTP request that the set command sent by defining the attribute setXXParseResponse.
(get|set|reading)[0-9]*Encode
            defines an encoding to be used in a call to the perl function encode to convert the data string read from the device to a reading.
            This can be used if the device delivers strings in an encoding like cp850 and after decoding it you want to reencode it to e.g. utf8.
            When the attribute bodyDecode is not set to 'none' then this encoding attribute defaults to utf8.
            If your reading values contain Umlauts and they are shown as strange looking icons then you probably need to modidify this attribute.
            Using this attribute for a set command only makes sense if you want to parse the HTTP response to the HTTP request that the set command sent by defining the attribute setXXParseResponse.
bodyDecode
            defines an encoding to be used in a call to the perl function decode to convert the raw http response body data string
            read from the device before further processing / matching
            If you have trouble matching special characters or if your reading values contain Umlauts
            and they are shown as strange looking icons then you might need to use this feature.
            If this attribute is set to 'auto' then HTTPMOD automatically looks for a charset header and decodes the body acordingly.
            If no charset header is found, the body will remain undecoded.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 März 2022, 19:22:57
Hallo FhemPiUser,

wenn Du Formulare ausfüllst, dann wird vom Browser ein entsprechender HTTP-Request an den Server geschickt Den musst Du Dir nur ansehen und in HTTPMOD nachbauen.
Wenn es mehrere variable Felder sind dann helfen die replacements von HTTPMOD.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: l-j-silver am 12 März 2022, 21:51:12
Hallo Stefan,

das habe ich auch schon gelesen. Leider bin ich daraus nicht schlau geworden.
Daher habe ich auch den Beitrag verfasst.
Ich hatte gehofft, dass mir jemand sagen kann, was ich am Besten ändern sollte.

Vielen Dank.

Grüße Toni
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 21 März 2022, 17:40:59
Gibt es einen bestimmten Grund, warum HTTPMOD das Attribut "disabledForIntervals" nicht unterstützt?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 21 März 2022, 23:26:20
Hallo,

ich stehe vor dem Problem, dass ich Inhalte folgender Webseite auslesen möchte (konkret die Werte der Globalstrahlung):
https://calc.donnerwetter.de/globalstrahlung/?d=1646089200000&zc=80333

Die Verwendung von HTTPMOD funktioniert grundsätzlich, mit Regex komme ich auch so weit klar, nur bei o.g. Seite werden die konkreten Daten offensichtlich über JavaScript generiert, so wie ich das verstehe. Wenn ich mir den Quelltext der Seite im Browser anzeigen lassen stehen die Werte nicht drin, deswegen kann HTTPMOD auch nichts finden.

Kennt jemand einen Trick, wie ich trotzdem an die Daten komme? Viell. irgendwie zwischenspeichern/exportieren und dann parsen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 23 März 2022, 14:03:07
Zitat von: timtom2000 am 21 März 2022, 23:26:20
Hallo,

ich stehe vor dem Problem, dass ich Inhalte folgender Webseite auslesen möchte (konkret die Werte der Globalstrahlung):
https://calc.donnerwetter.de/globalstrahlung/?d=1646089200000&zc=80333

Die Verwendung von HTTPMOD funktioniert grundsätzlich, mit Regex komme ich auch so weit klar, nur bei o.g. Seite werden die konkreten Daten offensichtlich über JavaScript generiert, so wie ich das verstehe. Wenn ich mir den Quelltext der Seite im Browser anzeigen lassen stehen die Werte nicht drin, deswegen kann HTTPMOD auch nichts finden.

Kennt jemand einen Trick, wie ich trotzdem an die Daten komme? Viell. irgendwie zwischenspeichern/exportieren und dann parsen?
Hallo,
da das sicher auch für andere interessant ist habe ich es als eigenen Thread ausgelagert.
Schon mit der jetzigen Version kann man es recht gut verwenden.

https://forum.fhem.de/index.php/topic,126925.0.html

VG
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 22 April 2022, 21:39:59
Hallo zusammen,

kann mir jemand helfen, aus der folgenden Zeile bestimmte Daten mittels HTTPMOD in einen Reading zu packen

<div id="content" class="propfont">
<meta http-equiv="refresh" content="15;URL=/cpursx.ps3?/sman.ps3"><noscript><h1 style='color:#f03'>Fehler! Javascript Deaktiviert</h1></noscript><script>l('games','Spiele');l('files','Dateien');l('setup','Einstellungen');l('eject','Disk auswerfen');l('insert','Disk einziehen');l('refresh','Aktualisieren');l('restart','Neustarten');l('shutdown','Ausschalten');l('msg2','Meine Spiele ...');</script><hr><font size="42px"><b><a class="s" href="/cpursx.ps3?up">CPU: 57°C (MAX: 70°C)<br>RSX: 65°C</a><hr><a class="s" href="/cpursx.ps3?dn">CPU: 134°F (MAX: 158°F)<br>RSX: 149°F</a><hr><a class="s" href="/browser.ps3$slaunch">MEM: 864 KB (XMB)</a><br><a href="/dev_hdd0">HDD: 546.2 GB frei</a><hr><a class="s" href="/cpursx.ps3?mode">GESCHWINDIGKEIT:  29% (0x4C)</a><br><hr><a href="/dev_hdd0/home/00000012"><label title="Startup"><img src='/dev_hdd0/tmp/wm_icons/time.png' border=0 style='position:relative;top:8px;'></label> 0d 00:18:43</a></font><H1><img src='/dev_hdd0/tmp/wm_icons/power.png' style='position:relative;top:8px;'> 130d 23:12:07 • 1,411 ON • 1,380 OFF (31)</H1><hr><font size="3"><a href="/play.ps3">/dev_bdvd</a> -> <a class="f" href="/dev_hdd0/">/dev_hdd0</a>/<a class="f" href="/dev_hdd0/GAMES/">GAMES</a>/<a href="/mount.ps3/dev_hdd0/GAMES/BLES01862-[Rocksmith+2014]">BLES01862-[Rocksmith 2014]</a></font><hr><h2><input type=button onclick="document.getElementById('ht').style.display='block';" value='▼'> <a class="s" href="/setup.ps3">Firmware : XX<br><br><span id='ht' style='display:none;'>PSID LV2 : XXX<hr>IDPS EID0: XXX<br>IDPS LV2 : XXX<br>MAC Addr : XX - XX LAN</span></h2></a></b><hr color="blue"/>webMAN 1.47.37 MOD - Simple Web Server (NTFS) [XX] <p><div style="position:fixed;right:20px;bottom:10px;opacity:0.2"><a href="/dev_bdvd"><img src="/dev_hdd0/tmp/wm_icons/icon_wm_ps3.png" height="12"></a> <a href="#Top">▲</a></div><b></font></body></html>


Konkret möchte ich den String:
BLES01862-[Rocksmith+2014]
als Inhalt eines Readings haben.

Wie könnte dazugehörige RegExp aussehen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 22 April 2022, 23:37:06
Zitat von: EinEinfach am 22 April 2022, 21:39:59
Hallo zusammen,

kann mir jemand helfen, aus der folgenden Zeile bestimmte Daten mittels HTTPMOD in einen Reading zu packen

< snip >

Konkret möchte ich den String:
BLES01862-[Rocksmith+2014]
als Inhalt eines Readings haben.

Wie könnte dazugehörige RegExp aussehen?


href="\/mount.*\/(.*\])">


VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 23 April 2022, 11:05:57
Genial Christian!! Ich danke dir vielmals. Das mit den RegExp werde ich wohl nie kapieren.

Von welcher Seite stamm der Screenshot?

Grüße
Alexander
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 23 April 2022, 11:07:08
alternativ, falls man tatsächlich den angezeigten Wert haben möchte und nicht den string aus dem <a> tag:

\/mount.*>(.*\])<

der Screenshot dürfte von regex101.com sein.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: andies am 23 April 2022, 11:07:59
 https://regex101.com/ (https://regex101.com/)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 23 April 2022, 17:22:26
Zitat von: andies am 23 April 2022, 11:07:59
https://regex101.com/ (https://regex101.com/)
Sorry, die URL war ja nicht mit drauf, es war schon spät.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 23 April 2022, 20:56:04
Zitat von: betateilchen am 23 April 2022, 11:07:08
alternativ, falls man tatsächlich den angezeigten Wert haben möchte und nicht den string aus dem <a> tag:

\/mount.*>(.*\])<

der Screenshot dürfte von regex101.com sein.
Er hatte ja expliziet nach dem Teil mit dem "+" im String gefragt ;-)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 24 April 2022, 20:07:12
Ich habe gerade eine neue Version eingecheckt, in der die online-Hilfe für Attribute per FhemWeb funktionieren sollten.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 25 April 2022, 11:59:56
Zitatalternativ, falls man tatsächlich den angezeigten Wert haben möchte und nicht den string aus dem <a> tag:

Beides ist in Ordnung, Danke.

Dank euren Beispielen und der Seite https://regex101.com/ (https://regex101.com/) sieht es so aus, dass ich langsam anfange bei dem Thema durchzublicken
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 13 Juni 2022, 11:36:35
Hallo zusammen,

ich betreibe eine Klimaanlage von Panasonic, mit Hilfe des HTTPMOD Moduls lese ich die Daten aus der Cloud und damit kann ich, was ich auch in der App machen kann mit fhem machen. Nun hat aber Panasonic blöde Angewohnheit nach jedem Update die X-APP-VERSION im Header zu ändern. Und zwar nach keinem bestimmten Muster, mal ist es 1.15.0 mal ist es 2.0.0. Es hat aber zur Folge, dass die Verbindung von fhem mit der falschen X-APP-VERSION abgelehnt wird und fhem sich nicht mehr verbinden kann. Gibt es eine Möglichket die Daten automatisiert aus dem header rauszufischen und im Attribut nachpflegen.

Ich würde nicht fragen, wenn ich einmal im Jahr burp suite anschmeißen muss und die X-APP-Version wieder aktulaisieren muss, aber letzte Zeit ist aus dieser Ausnahme eher Regel geworden und ich muss monatlich hier was ändern.

Danke und Gruß
Alexander
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Juni 2022, 10:19:01
Hallo,

wenn man den Header abfragen kann, ohne ihn dafür schon mitschicken zu müssen, dann sollte das machbar sein. Einfach so wie die anderen Werte aus der Antwort rausholen, in ein Reading packen und dann per replacement in die künftigen Requests wieder einbauen.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 06 Juli 2022, 09:42:59
Hallo zusammen, ich schon wieder,

ich versuche aktuell eine simple POST Anfrage in fhem zu realisieren und irgendwie scheitere ich daran und langsam bin ich Ideenlos was ich machen kann. Vielleicht kann einer noch mal über meine Defintionen drüberschauen. Evtl. hat jemand einen Tipp für mich, was ich noch machen kann.

Mit dem BurpSuite die Kommunikation mitgeschnitten und es sieht wie folgt aus:
Request:
POST / HTTP/1.1
Host: 192.168.2.55
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0
Accept: */*
Accept-Language: de
Content-Type: text/plain
Content-Length: 10
Origin: http://grauonline.de
Connection: close
Referer: http://grauonline.de/

AT+S,0x13


Der Response darauf ist:
HTTP/1.1 200 OK
Content-Type: text/html
Access-Control-Allow-Origin: *

S,28.55,-8.18,-8.71,-1.34,2,2,0,0.23,0,-8.35,-7.98,0.02,44,-0.02,38,-1427908,-0.01,0xb8


Meine Definition in fhem sieht wie folgt aus:
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      62b9fd69-f33f-c57e-3f63-def3219935888316
   Interval   0
   MainURL   
   ModuleVersion 4.1.12 - 19.4.2022
   NAME       Test
   NOTIFYDEV  global
   NR         1524
   NTFY_ORDER 50-Test
   STATE      ???
   TYPE       HTTPMOD
   eventCount 89
   httpbody   
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.2.55:80
     auth       0
     code       200
     compress   1
     conn       
     data       AT+S,0x13
     displayurl http://192.168.2.55/
     header     Accept: */*
Content-Type: text/plain
     host       192.168.2.55
     httpheader HTTP/1.1 200 OK
Content-Type: text/html
Access-Control-Allow-Origin: *
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /
     protocol   http
     redirects  0
     timeout    2
     url        http://192.168.2.55/
     sslargs:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2022-07-06 09:35:20   rssi_ntrip      -70
   REQUEST:
     context    get
     data       AT+S,0x13
     header     Accept: */*
Content-Type: text/plain
     ignoreredirects 0
     num        02
     retryCount 0
     type       get02
     url        http://192.168.2.55/
     value     
   defptr:
     readingBase:
       batteryCurrent reading
       batteryVoltage reading
       battery_voltage reading
       dgpsAge    reading
       gps.accuracy reading
       gps.numSV  reading
       gps.numSVdgps reading
       gps.solution reading
       job        reading
       lateralError reading
       mapCRC     reading
       mowPointsIdx reading
       position_delta reading
       position_mow_point_index reading
       position_solution reading
       position_x reading
       position_y reading
       reading02  reading
       rssi_ntrip get
       stateDelta reading
       stateOp    reading
       stateSensor reading
       stateX     reading
       stateY     reading
       targetPoint.x reading
       targetPoint.y reading
     readingNum:
       batteryCurrent 14
       batteryVoltage 01
       battery_voltage 01
       dgpsAge    08
       gps.accuracy 12
       gps.numSV  13
       gps.numSVdgps 15
       gps.solution 05
       job        06
       lateralError 17
       mapCRC     16
       mowPointsIdx 07
       position_delta 04
       position_mow_point_index 07
       position_solution 05
       position_x 02
       position_y 03
       reading02  02
       rssi_ntrip 01
       stateDelta 04
       stateOp    06
       stateSensor 09
       stateX     02
       stateY     03
       targetPoint.x 10
       targetPoint.y 11
     readingOutdated:
     requestReadings:
       get01:
         rssi_ntrip get 01
       get02:
         batteryCurrent reading 14
         batteryVoltage reading 01
         battery_voltage reading 01
         dgpsAge    reading 08
         gps.accuracy reading 12
         gps.numSV  reading 13
         gps.numSVdgps reading 15
         gps.solution reading 05
         job        reading 06
         lateralError reading 17
         mapCRC     reading 16
         mowPointsIdx reading 07
         position_delta reading 04
         position_mow_point_index reading 07
         position_solution reading 05
         position_x reading 02
         position_y reading 03
         stateDelta reading 04
         stateOp    reading 06
         stateSensor reading 09
         stateX     reading 02
         stateY     reading 03
         targetPoint.x reading 10
         targetPoint.y reading 11
       update:
         battery_voltage reading 01
         position_delta reading 04
         position_x reading 02
         position_y reading 03
         reading02  reading 02
   lastpoll:
     rssi_ntrip 1656407052.60855
Attributes:
   DbLogExclude .*
   get01JSON  wifi.sta.rssi
   get01Name  rssi_ntrip
   get01Poll  1
   get01URL   http://192.168.2.56/status
   get02Data  AT+S,0x13
   get02Name  http_summary
   get02URL   http://192.168.2.55/
   get03Data  AT+T,0x14
   get03Name  http_statistic
   get03URL   http://192.168.2.55/
   getHeader1 Accept: */*
   getHeader2 Content-Type: text/plain
   reading01Name batteryVoltage
   reading01Regex S,([\d\.]+),
   reading02Name stateX
   reading02Regex S,[\d\.]+,(-?[\d\.]+)
   reading03Name stateY
   reading03Regex S,[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading04Name stateDelta
   reading04Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading05Name gps.solution
   reading05Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading06Name stateOp
   reading06Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading07Name mowPointsIdx
   reading07Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading08Name dgpsAge
   reading08Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading09Name stateSensor
   reading09Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading10Name targetPoint.x
   reading10Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading11Name targetPoint.y
   reading11Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading12Name gps.accuracy
   reading12Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading13Name gps.numSV
   reading13Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading14Name batteryCurrent
   reading14Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading15Name gps.numSVdgps
   reading15Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading16Name mapCRC
   reading16Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   reading17Name lateralError
   reading17Regex S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+)
   showBody   1
   showError  1
   verbose    5


Im Log mit verbose 5 bekomme ich folgende Meldung:
2022.07.06 09:38:07 5: Test: get called with http_summary
2022.07.06 09:38:07 5: Test: get found option http_summary in attribute get02Name
2022.07.06 09:38:07 4: Test: get will now request http_summary, no optional value
2022.07.06 09:38:07 5: Test: AddToQueue adds type get02 to URL http://192.168.2.55/, data AT+S,0x13, header Accept: */*
Content-Type: text/plain, retry 0, initial queue len: 0
2022.07.06 09:38:07 5: Test: HandleSendQueue called from AddToSendQueue, qlen = 1
2022.07.06 09:38:07 4: Test: HandleSendQueue sends get02 with timeout 2 to http://192.168.2.55/,
data: AT+S,0x13,
header: Accept: */*
Content-Type: text/plain
2022.07.06 09:38:08 5: Test: ReadCallback called from __ANON__
2022.07.06 09:38:08 4: Test: Read callback: request type was get02 retry 0,
header: HTTP/1.1 200 OK
Content-Type: text/html
Access-Control-Allow-Origin: *, no body
2022.07.06 09:38:08 5: Test: Read callback: body empty
2022.07.06 09:38:08 4: Test: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2022.07.06 09:38:08 5: Test: GetCookies is looking for Cookies
2022.07.06 09:38:08 5: Test: ExtractSid called, context get, num 02
2022.07.06 09:38:08 4: Test: checking for redirects, code=200, ignore=0
2022.07.06 09:38:08 4: Test: no redirects to handle
2022.07.06 09:38:08 5: Test: Read callback sets LAST_REQUEST to get02
2022.07.06 09:38:08 5: Test: CheckAuth decided no authentication required
2022.07.06 09:38:08 5: Test: ExtractReading for context get, num 02 - no individual parse definition
2022.07.06 09:38:08 5: Test: Read starts parsing response to get02 with defined readings: 01,02,03,04,05,06,07,08,09,10,11,12,13,14,15,16,17
2022.07.06 09:38:08 5: Test: ExtractReading batteryVoltage with regex /(?^:S,([\d\.]+),)/...
2022.07.06 09:38:08 5: Test: ExtractReading batteryVoltage did not match
2022.07.06 09:38:08 5: Test: ExtractReading stateX with regex /(?^:S,[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading stateX did not match
2022.07.06 09:38:08 5: Test: ExtractReading stateY with regex /(?^:S,[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading stateY did not match
2022.07.06 09:38:08 5: Test: ExtractReading stateDelta with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading stateDelta did not match
2022.07.06 09:38:08 5: Test: ExtractReading gps.solution with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading gps.solution did not match
2022.07.06 09:38:08 5: Test: ExtractReading stateOp with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading stateOp did not match
2022.07.06 09:38:08 5: Test: ExtractReading mowPointsIdx with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading mowPointsIdx did not match
2022.07.06 09:38:08 5: Test: ExtractReading dgpsAge with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading dgpsAge did not match
2022.07.06 09:38:08 5: Test: ExtractReading stateSensor with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading stateSensor did not match
2022.07.06 09:38:08 5: Test: ExtractReading targetPoint.x with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading targetPoint.x did not match
2022.07.06 09:38:08 5: Test: ExtractReading targetPoint.y with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading targetPoint.y did not match
2022.07.06 09:38:08 5: Test: ExtractReading gps.accuracy with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading gps.accuracy did not match
2022.07.06 09:38:08 5: Test: ExtractReading gps.numSV with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading gps.numSV did not match
2022.07.06 09:38:08 5: Test: ExtractReading batteryCurrent with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading batteryCurrent did not match
2022.07.06 09:38:08 5: Test: ExtractReading gps.numSVdgps with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading gps.numSVdgps did not match
2022.07.06 09:38:08 5: Test: ExtractReading mapCRC with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading mapCRC did not match
2022.07.06 09:38:08 5: Test: ExtractReading lateralError with regex /(?^:S,[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,-?[\d\.]+,(-?[\d\.]+))/...
2022.07.06 09:38:08 5: Test: ExtractReading lateralError did not match
2022.07.06 09:38:08 4: Test: Read response to get02 didn't match any Reading
2022.07.06 09:38:08 5: Test: HandleSendQueue called from ReadCallback, qlen = 0
2022.07.06 09:38:08 5: Test: HandleSendQueue found no usable entry in queue


Was mache ich falsch?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: EinEinfach am 06 Juli 2022, 15:29:57
Habe den Fehler selbst gefunden. Die Ausgabe von Burp Suite noch mal als HEX angeschaut. Die Zeile wird mit 0x0a terminiert. Was die gesamte content-legth auf 10 erhöht. Mit meinen Parametern war die aus fhem gesendete Anafrage nur 9 Bytes lang. Das hat den Empfänger wohl gestört. Ich habe den Attribut
get02Data  AT+S,0x13
auch mit neun Zeile terminiert, damit geht es

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 12 August 2022, 09:43:50
Eine einfach Frage, aber ich komme gerade nicht drauf, wie steuere ich das nur Werte die gespeichert werden, wenn sich diese (ins positive) verändert haben?

Konkreter Fall:
Wert: 1
Wert: 2
Wert: 3
Wert: 0 <= soll nicht gespeichert werden
Wert: 4
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 August 2022, 18:29:41
Hallo,

was meinst Du mit ,,speichern"?
An einen Webserver schicken?
In ein Reading schreiben?
Etwas anderes?

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 13 August 2022, 21:12:51
Zitat von: StefanStrobel am 13 August 2022, 18:29:41
In ein Reading schreiben?
Korrekt, dass er es im HTTPMOD Reading nicht speichert.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 August 2022, 13:04:28
Zitat von: Hauswart am 13 August 2022, 21:12:51
Korrekt, dass er es im HTTPMOD Reading nicht speichert.

Ok, dafür gibt es in HTTPMOD keine explizite Funktion.
Im Modbus-Modul habe ich für so einen Fall eine ignoreExpr eingebaut, die kann ich bei nächster Gelegenheit auch in HTTPMOD übertragen. Alternativ müsstest Du sowas auch irgendwie mit UserReadings machen können.

Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 16 August 2022, 07:24:55
Zitat von: StefanStrobel am 15 August 2022, 13:04:28
Ok, dafür gibt es in HTTPMOD keine explizite Funktion.
Im Modbus-Modul habe ich für so einen Fall eine ignoreExpr eingebaut, die kann ich bei nächster Gelegenheit auch in HTTPMOD übertragen. Alternativ müsstest Du sowas auch irgendwie mit UserReadings machen können.
Ja mit UserReadings ist dies möglich, aber irgendwie finde ich den Ansatz den Wert prüfen, bevor ich ihn speichere deutlich besser. :) Hatte schon überlegt, ob es mit readingOExpr gehe würde...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 18 August 2022, 10:13:31
Zitat von: Hauswart am 16 August 2022, 07:24:55
Ja mit UserReadings ist dies möglich, aber irgendwie finde ich den Ansatz den Wert prüfen, bevor ich ihn speichere deutlich besser. :) Hatte schon überlegt, ob es mit readingOExpr gehe würde...
Bei readingOExpr kannst Du doch eine Perl Routine angeben, die Dir das weg filtert, was Du nicht brauchst.

EDIT: Eventuell brauchst Du dafür aber noch ein Hilfsreading, dass Dir den Vorherigen Wert merkt, damit Du Dir den dann aus der Perl Funktion wiederherstellen kannst.
         Mit event-on-change-reading sollte man dann noch ein Event unterdrücken können, da Du ja mit dem gleichen Wert überschreiben würdest.

Da sollte man z.B. sowas eintragen können

$val * (10 ** ReadingsNum("$name" ,"M_AC_Freq_SF",0))


Zitat
If you need to do some calculation on a raw value before it is used as a reading, you can define the attribute readingOExpr.
It defines a Perl expression that is used in an eval to compute the readings value. The raw value will be in the variable $val.
Example:

    attr PM reading03OExpr $val * 10

Just like in the above example of the readingFormat attributes, readingOExpr and the other following attributes can be applied on several levels.

VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 18 August 2022, 16:20:52
Gute Ideen, aber mit event-on-change-reading kann ich ja nur eine minimale Abweichung angeben, aber keine maximale?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 18 August 2022, 16:35:10
Zitat von: Hauswart am 18 August 2022, 16:20:52
Gute Ideen, aber mit event-on-change-reading kann ich ja nur eine minimale Abweichung angeben, aber keine maximale?
Ich gebe da garkeine Abweichung an, mir ging es dabei nur darum, wenn Deine Perl Funktion bei einer kommenden 0 den vorherigen Wert
wieder schreiben würde, also z.B. eine 3 , damit kein neues Event erzeugt wird.


Wert: 1      ==> geht in die Funktion; ist keine 0 ; wird als Merker weg geschrieben; 1 wird zurück geliefert; der Merker steht auf 1
Wert: 2      ==> geht in die Funktion; ist keine 0 ; wird als Merker weg geschrieben; 2 wird zurück geliefert; der Merker steht auf 2
Wert: 3      ==> geht in die Funktion; ist keine 0 ; wird als Merker weg geschrieben; 3 wird zurück geliefert; der Merker steht auf 3
Wert: 0      ==> geht in die Funktion; ist eine 0; der Merker (3) wird gelesen; 3 wird zurück geliefert; der Merker steht auf 3
Dadurch das eine 3 geschrieben wird und das event-on-change-reading gesetzt ist wird aber kein Event erzeugt, weil der Wert von 3 gleich bleibt.
Wert: 4      ==> geht in die Funktion; ist keine 0 ; wird als Merker weg geschrieben;4 wird zurück geliefert; der Merker steht auf 4

Den Merker würde ich auch einfach als reading ins Device schreiben.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 August 2022, 15:21:27
Hallo,

anbei eine neue Version zum Testen.
Darin habe ich das IgnoreExpr-Attribut vom Modbus-Modul übernommen. Doku fehlt noch.
Beispiel:
attr reading01IgnoreExpr $val <= $oldVal
Ignoriert alle Werte wenn sie nicht größer alles der bisherige Wert sind. Dann wird das Reading nicht geschrieben.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 19 August 2022, 15:45:00
Zitat von: StefanStrobel am 19 August 2022, 15:21:27
Hallo,

anbei eine neue Version zum Testen.
Darin habe ich das IgnoreExpr-Attribut vom Modbus-Modul übernommen. Doku fehlt noch.
Beispiel:
attr reading01IgnoreExpr $val <= $oldVal
Ignoriert alle Werte wenn sie nicht größer alles der bisherige Wert sind. Dann wird das Reading nicht geschrieben.
Dann sollte das beim bestehenden Problem mit "$val == 0" helfen können, denn ich hatte es so verstanden, dass die Nullen raus sollten.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 22 August 2022, 12:10:57
Zitat von: StefanStrobel am 19 August 2022, 15:21:27
Hallo,

anbei eine neue Version zum Testen.
Darin habe ich das IgnoreExpr-Attribut vom Modbus-Modul übernommen. Doku fehlt noch.
Beispiel:
attr reading01IgnoreExpr $val <= $oldVal
Ignoriert alle Werte wenn sie nicht größer alles der bisherige Wert sind. Dann wird das Reading nicht geschrieben.

Gruß
   Stefan


Danke dir. Leider scheint noch ein Bug drinnen zu sein. ich habe es so getestet:
setreading Solar2 current_power-1 8888
Attribut:
attr Solar2 reading01IgnoreExpr $val <= $oldVal
aber nach ner Minute:
Zitatcurrent_power-1 867 2022-08-22 12:09:58


Scheint doch zu gehen, aber mit setreading verhebt es wohl nicht.... :) ich gebe morgen nochmal Feedback aber sieht nun gut aus.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 22 August 2022, 13:03:16
Also es gibt auch einen Fehler im Logfile:
2022.08.22 13:01:58 3: Solar2: IgnoreExpr for current_power with expresion package main; my $oldVal = $oRef->{'$oldVal'};my @val = @{$oRef->{'@val'}};$val <= $oldVal created warning: Argument "" isn't numeric in numeric le (<=) at (eval 7389166) line 1.


Mmh liegt es am Extension -1 des Readings? Im Device heisst es current_power-1 beim Attribut steht current_power:
attr Solar2 reading01Name current_power
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 22 August 2022, 13:22:58
Zitat von: Hauswart am 22 August 2022, 13:03:16
Also es gibt auch einen Fehler im Logfile:
2022.08.22 13:01:58 3: Solar2: IgnoreExpr for current_power with expresion package main; my $oldVal = $oRef->{'$oldVal'};my @val = @{$oRef->{'@val'}};$val <= $oldVal created warning: Argument "" isn't numeric in numeric le (<=) at (eval 7389166) line 1.


Mmh liegt es am Extension -1 des Readings? Im Device heisst es current_power-1 beim Attribut steht current_power:
attr Solar2 reading01Name current_power

Dann liefert die Abfrage zu Deinem reading mehrere Werte zurück, die dann in durchnummerierte readings abgelegt werden. Der reading01Name current_power ist dann die Basis der reading Namen.
Schau Dir die http Seite nochmal bei Regex101 an und sofge dafür, dass mit der Regex nur ein Wert zurück kommt.

VG   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 22 August 2022, 16:37:09
Zitat von: ch.eick am 22 August 2022, 13:22:58
Dann liefert die Abfrage zu Deinem reading mehrere Werte zurück, die dann in durchnummerierte readings abgelegt werden. Der reading01Name current_power ist dann die Basis der reading Namen.
Schau Dir die http Seite nochmal bei Regex101 an und sofge dafür, dass mit der Regex nur ein Wert zurück kommt.

VG   Christian
Hi Christian,

es gibt jeweils nur einen Match zur Definition.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  <html xmlns="http://www.w3.org/1999/xhtml"> <head> <style type="text/css"> .in_body { margin-top:0px; margin-left:0px; margin-right:0px; margin-bottom:0px; background-color:transparent; } .div_c { margin-left:50px; margin-right:50px; margin-top:50px; margin-bottom:50px; } .cu { cursor:pointer; } .b { font-weight:bold; } .lab_5 { font-size:16px; color:#666666; margin-left:-20px; } .lab_l2 { float:left; width:32%; color:#666666; margin-bottom:-2px; font-size:14px; } .lab_r2 { float:left; width:68%; color:#666666; text-align:right; font-size:14px; } .cl { clear:left; } .line { height:1px; background-color:#666666; width:100%; margin-top:5px; margin-bottom:5px; } .sp_5 { height:5px; width:500px; } .sp_20 { height:20px; width:500px; } .label { float:left; width:50%; color:#666666; margin-bottom:-2px; font-size:14px; } .lab_r { float:left; width:50%; color:#666666; text-align:right; font-size:14px; } .lab_l { float:left; width:40%; color:#666666; margin-bottom:-2px; margin-left:10%; font-size:14px; } .line_l { height:1px; background-color:#666666; width:450px; margin-top:5px; margin-bottom:5px; margin-left:50px; } .sub {     display:inline-block;     width:16px;     text-align:center; } </style> <script type="text/javascript"> var height=0;function fileText(id,value){if(document.getElementById(id)){document.getElementById(id).innerHTML=value}}function changeFont(){reCon("main_div").style.fontFamily=window.parent.reFont()}function child_getH(){var nh=document.body.offsetHeight+100;if(nh<500||nh==null){nh=500}if(height!=nh){height=nh;window.parent.child_height(height)}}function reCon(id){return document.getElementById(id)}function ready(){try{window.parent.show_ifr()}catch(e){}child_getH()}function show(v){var c=document.getElementById(v);if(c!=null){c.style.display=""}}function hide(v){var c=document.getElementById(v);if(c!=null){c.style.display="none"}}; </script> <script type="text/javascript"> var webdata_sn = ""; var webdata_msvn = ""; var webdata_ssvn = ""; var webdata_pv_type = ""; var webdata_rate_p = ""; var webdata_now_p = "1"; var webdata_today_e = "1"; var webdata_total_e = "1"; var webdata_alarm = ""; var webdata_utime = "0"; var cover_mid = ""; var cover_ver = "MW3_14_5406_1.33"; var cover_wmode = "APSTA"; var cover_ap_ssid = ""; var cover_ap_ip = "10.10.100.254"; var cover_ap_mac = ""; var cover_sta_ssid = ""; var cover_sta_rssi = "35%"; var cover_sta_ip = ""; var cover_sta_mac = ""; var status_a = "1"; var status_b = "0"; var status_c = "0";  function initPageText(){var list=window.parent.reList("status");fileText("st1",list["t1"]);fileText("st2",list["t2"]);fileText("st3",list["t3"]);for(var i=1;i<=27;i++){if(i!=14){fileText("tx"+i,list[i])}}changeFont();child_getH()}function upfold(v){if(document.getElementById("up_"+v+"_div").style.display=="none"){show("up_"+v+"_div");reCon("p_"+v).innerHTML="-"}else{hide("up_"+v+"_div");reCon("p_"+v).innerHTML="+"}}function init_main_page(){var on=window.parent.reTip("1");var off=window.parent.reTip("2");document.getElementById("cover_mid").innerHTML=cover_mid;document.getElementById("cover_ver").innerHTML=cover_ver;document.getElementById("cover_ap_status").innerHTML=off;document.getElementById("cover_sta_status").innerHTML=off;if(cover_wmode!="STA"){document.getElementById("cover_ap_status").innerHTML=on;document.getElementById("cover_ap_ssid").innerHTML=cover_ap_ssid;document.getElementById("cover_ap_ip").innerHTML=cover_ap_ip;document.getElementById("cover_ap_mac").innerHTML=cover_ap_mac}if(cover_wmode!="AP"){document.getElementById("cover_sta_status").innerHTML=on;document.getElementById("cover_sta_ssid").innerHTML=cover_sta_ssid;document.getElementById("cover_sta_rssi").innerHTML=cover_sta_rssi;document.getElementById("cover_sta_ip").innerHTML=cover_sta_ip;document.getElementById("cover_sta_mac").innerHTML=cover_sta_mac}if(webdata_sn==""){webdata_sn="---"}fileText("webdata_sn",webdata_sn);if(webdata_msvn==""){webdata_msvn="---"}fileText("webdata_msvn",webdata_msvn);if(webdata_ssvn==""){webdata_ssvn="---"}fileText("webdata_ssvn",webdata_ssvn);if(webdata_pv_type==""){webdata_pv_type="---"}fileText("webdata_pv_type",webdata_pv_type);if(webdata_rate_p==""){webdata_rate_p="---"}fileText("webdata_rate_p",webdata_rate_p+" W");if(webdata_now_p==""||webdata_now_p==0){webdata_now_p="---"}fileText("webdata_now_p",webdata_now_p+" W");if(webdata_today_e==""){webdata_today_e="---"}fileText("webdata_today_e",webdata_today_e+" kWh");if(webdata_total_e==""){webdata_total_e="---"}fileText("webdata_total_e",webdata_total_e+" kWh");if(webdata_alarm==""){webdata_alarm="---"}fileText("webdata_alarm",webdata_alarm);if(webdata_utime==""){if(document.getElementById("webdata_sn").innerHTML=="---"){webdata_utime="---"}else{webdata_utime=value+window.parent.reTip("5")}}fileText("webdata_utime",webdata_utime);var st_en=window.parent.reTip("3");var st_dis=window.parent.reTip("4");var st_un=window.parent.reTip("41");if(status_a=="1"){document.getElementById("cover_remote_status_a").innerHTML=st_en}else{if(status_a=="0"){document.getElementById("cover_remote_status_a").innerHTML=st_dis}else{document.getElementById("cover_remote_status_a").innerHTML=st_un}}if(status_b=="1"){document.getElementById("cover_remote_status_b").innerHTML=st_en}else{if(status_b=="0"){document.getElementById("cover_remote_status_b").innerHTML=st_dis}else{document.getElementById("cover_remote_status_b").innerHTML=st_un}}};  </script> </head> <body class="in_body" onload="init_main_page();"> <div class="div_c" id="main_div">         <div class="lab_5 cu b" onclick="upfold(1);child_getH();"><span class="sub" id="p_1">-</span><span id="st1" style="margin-left:3px"></span><>         <div class="sp_5"><>         <div id="up_1_div">         <div class="lab_l2" id="tx1"><>                 <div class="lab_r2" id="webdata_sn"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" id="tx2"><>                 <div class="lab_r2" id="webdata_msvn"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" id="tx3"><>                 <div class="lab_r2" id="webdata_ssvn"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" id="tx4"><>                 <div class="lab_r2" id="webdata_pv_type"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" id="tx5"><>                 <div class="lab_r2" id="webdata_rate_p"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx6"><>                 <div class="lab_r2" id="webdata_now_p" style="color:#666666;font-weight:bold;"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx7"><>                 <div class="lab_r2" id="webdata_today_e" style="color:#666666;font-weight:bold;"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx8"><>                 <div class="lab_r2" id="webdata_total_e" style="color:#666666;font-weight:bold;"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx9"><>                 <div class="lab_r2" id="webdata_alarm" style="color:#666666;font-weight:bold;"><>         <div class="cl"><>         <div class="line"><>         <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx10"><>                 <div class="lab_r2" id="webdata_utime" style="color:#666666;font-weight:bold;"><>         <div class="cl"><>         <div class="line"><>         <>         <div class="sp_20"><>         <div class="lab_5 cu b" onclick="upfold(2);child_getH();"><span class="sub" id="p_2">+</span><span id="st2" style="margin-left:3px"></span><>                 <div class="sp_5"><>                 <div id="up_2_div" style="display:none">                 <div class="label" id="tx11"><>                 <div class="lab_r" id="cover_mid"><>                 <div class="cl"><>                 <div class="line"><>                 <div class="label" id="tx12"><>                 <div class="lab_r" id="cover_ver"><>                 <div class="cl"><>                 <div class="line"><>                 <div class="label" id="tx13"><>                 <div class="lab_r" id="cover_ap_status" style="color:#666666;font-weight:bold;"><>                 <div class="cl"><>                 <div class="line"><>                 <div class="lab_l" id="ap_ssid">SSID<>                 <div class="lab_r" id="cover_ap_ssid"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="lab_l" id="tx15"><>                 <div class="lab_r" id="cover_ap_ip"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="lab_l" id="tx16"><>                 <div class="lab_r" id="cover_ap_mac"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="label" id="tx17"><>                 <div class="lab_r" id="cover_sta_status" style="color:#666666;font-weight:bold;"><>                 <div class="cl"><>                 <div class="line"><>                 <div class="lab_l" id="tx18"><>                 <div class="lab_r" id="cover_sta_ssid"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="lab_l" id="tx19"><>                 <div class="lab_r" id="cover_sta_rssi"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="lab_l" id="tx20"><>                 <div class="lab_r" id="cover_sta_ip"><>                 <div class="cl"><>                 <div class="line_l"><>                 <div class="lab_l" id="tx21"><>                 <div class="lab_r" id="cover_sta_mac"><>                 <div class="cl"><>                 <div class="line_l"><>                 <>                  <div class="sp_20"><>                 <div class="lab_5 cu b" onclick="upfold(3);child_getH();"><span class="sub" id="p_3">+</span><span id="st3" style="margin-left:3px"></span><>                 <div class="sp_5"><>                 <div id="up_3_div" style="display:none">                 <div class="label" id="tx25"><>                 <div class="lab_r" id="cover_remote_status_a"><>                 <div class="cl"><>                 <div class="line"><>                 <div class="label" id="tx26"><>                 <div class="lab_r" id="cover_remote_status_b"><>                 <div class="cl"><>                 <div class="line"><>                 <>     <> <script type="text/javascript">     initPageText();     ready(); </script> </body> </html>


attr Solar reading01Name current_power
attr Solar reading01Regex var webdata_now_p = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
attr Solar reading02Name yield_today
attr Solar reading02Regex var webdata_today_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
attr Solar reading03Name total_yield
attr Solar reading03Regex var webdata_total_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"

Gruss
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 22 August 2022, 17:04:29
Zitat von: Hauswart am 22 August 2022, 16:37:09
es gibt jeweils nur einen Match zur Definition.
Nun ja, da sagt regex101 aber was anderes ;-)
Ich weiß nicht, was beim HTTPMOD der Default ist, nichts, g oder gm ?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 22 August 2022, 21:41:50
Du musst doch auch den Teil davor einsetzen zur Suche und dann wird es einmalig?


Edit: Suchstring: var webdata_total_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: der-Lolo am 04 September 2022, 12:44:23
sorry - Lösung gefunden...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 27 September 2022, 13:31:34
Zitat von: StefanStrobel am 19 August 2022, 15:21:27
Hallo,

anbei eine neue Version zum Testen.
Darin habe ich das IgnoreExpr-Attribut vom Modbus-Modul übernommen. Doku fehlt noch.
Beispiel:
attr reading01IgnoreExpr $val <= $oldVal
Ignoriert alle Werte wenn sie nicht größer alles der bisherige Wert sind. Dann wird das Reading nicht geschrieben.

Gruß
   Stefan


Hast du dir den Bug schon anschauen können? :)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Guenni1404 am 27 September 2022, 17:36:44
Hi,
ich versuche ein JSON auszulesen. I  Log bekomme ich immer folgende Meldung:

error while parsing JSON data: malformed UTF-8 character in JSON string, at character offset 974 (before "\x{df}e","direction"...") at lib/FHEM/HTTPMOD/Utils.pm line 678.

Mein list vom Device
Internals:
   BUSY       0
   CFGFN     
   DEF        https://www.invg.de/rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
   FUUID      6332fdad-f33f-0107-4cc8-de1ffe580e5e5b5b
   Interval   300
   MainURL    https://www.invg.de/rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
   ModuleVersion 4.1.10 - 6.7.2021
   NAME       invg
   NOTIFYDEV  global
   NR         18
   NTFY_ORDER 50-invg
   STATE      ???
   TYPE       HTTPMOD
   httpbody   {"stationName":"St. Markus","departures":[{"route":"11","destination":"Urnenfelderstr.","direction":"H","strTime":"0","lowfloor":false,"realtime":true,"traction":0},{"route":"11","destination":"Bahnhof IN Audi","direction":"R","strTime":"1 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Knoglersfreude","direction":"H","strTime":"5 min","lowfloor":false,"realtime":true,"traction":0},{"route":"16","destination":"Manching","direction":"H","strTime":"6 min","lowfloor":false,"realtime":true,"traction":0},{"route":"44","destination":"Karlskron / Zuchering-Hagau","direction":"H","strTime":"9 min","lowfloor":false,"realtime":true,"traction":0},{"route":"22","destination":"Weiherfeld","direction":"H","strTime":"10 min","lowfloor":false,"realtime":true,"traction":0},{"route":"11","destination":"Urnenfelderstr.","direction":"H","strTime":"10 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Herschelstra�e","direction":"R","strTime":"13 min","lowfloor":false,"realtime":true,"traction":0},{"route":"44","destination":"Audi-G V Z","direction":"R","strTime":"13 min","lowfloor":false,"realtime":true,"traction":0},{"route":"18","destination":"Baar-Ebenh. Langenbruck","direction":"H","strTime":"17 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Knoglersfreude","direction":"H","strTime":"18 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Herschelstra�e","direction":"R","strTime":"24 min","lowfloor":false,"realtime":true,"traction":0},{"route":"11","destination":"Urnenfelderstr.","direction":"H","strTime":"26 min","lowfloor":false,"realtime":true,"traction":0},{"route":"11","destination":"Bahnhof IN Audi","direction":"R","strTime":"31 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Knoglersfreude","direction":"H","strTime":"33 min","lowfloor":false,"realtime":true,"traction":0},{"route":"16","destination":"Z O B","direction":"R","strTime":"35 min","lowfloor":false,"realtime":true,"traction":0},{"route":"10","destination":"Herschelstra�e","direction":"R","strTime":"39 min","lowfloor":false,"realtime":true,"traction":0},{"route":"44","destination":"Audi-G V Z","direction":"R","strTime":"42 min","lowfloor":false,"realtime":true,"traction":0},{"route":"16","destination":"Z O B","direction":"R","strTime":"43 min","lowfloor":false,"realtime":true,"traction":0},{"route":"11","destination":"Bahnhof IN Audi","direction":"R","strTime":"46 min","lowfloor":false,"realtime":true,"traction":0}],"containsStar":false}
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://www.invg.de:443
     auth       0
     code       200
     compress   1
     conn       
     data       
     displayurl https://www.invg.de/rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
     header     
     host       www.invg.de
     httpheader HTTP/1.1 200 OK
Date: Tue, 27 Sep 2022 15:33:16 GMT
Server: Apache
Pragma: no-cache
Cache-Control: no-cache
Expires: 0
Vary: Accept-Encoding
Content-Encoding: gzip
Connection: close
Content-Type: text/plain;charset=ISO-8859-1
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
     protocol   https
     redirects  0
     timeout    2
     url        https://www.invg.de/rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
     sslargs:
   OLDREADINGS:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.invg.de/rt/getRealtimeData.action?stopPoint=3&station=IN-StMar&sid=401
   defptr:
     readingBase:
       Route      reading
     readingNum:
       Route      10
     readingOutdated:
     requestReadings:
       update:
         Route      reading 10
Attributes:
   bodyDecode none
   enableControlSet 1
   extractAllJSON 1
   showBody   1
   userattr   
   verbose    5


Was oder wie kann ich das ändern, dass er das JSON ausliest?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rudolfkoenig am 27 September 2022, 18:14:54
\x{df} ist ß in latin1.
UTF-8 waere \x{c39f}.

Entweder muss man den Server ueberzeugen, die Daten in UTF-8 zu schicken (und nicht latin1), oder man muss die Daten nach dem Empfang nach UTF-8 konvertieren, da JSON meines Wissens auf UTF-8 besteht.

Leider habe ich keine fertige Loesung.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 27 September 2022, 18:38:28
Zitat von: rudolfkoenig am 27 September 2022, 18:14:54
\x{df} ist ß in latin1.
UTF-8 waere \x{c39f}.

Entweder muss man den Server ueberzeugen, die Daten in UTF-8 zu schicken (und nicht latin1), oder man muss die Daten nach dem Empfang nach UTF-8 konvertieren, da JSON meines Wissens auf UTF-8 besteht.

Leider habe ich keine fertige Loesung.
Könnten da eventuell die HEADER bei der Abfrage helfen? Da kann man manchmal auch Zeichensätze von der Client Seite her vorgeben. Das ist aber nur so ein Gedanke von mir.

VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: rudolfkoenig am 27 September 2022, 18:45:22
Habe es auch gedacht, aber ich habe nur Accept-Charset gefunden, was angeblich nicht so toll ist: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Charset
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Oktober 2022, 12:30:13
Zitat von: Hauswart am 27 September 2022, 13:31:34
Hast du dir den Bug schon anschauen können? :)

Hallo Hauswart,

wie Christian schon geschrieben hat. Wenn Deine Regex eine Liste mit mehr als einem Element zurückliefert, dann werden die einzelnen Elemente zu Readings mit einem -Nummer am Ende.
Dann kann das ganze nicht funktionieren, da die ignoreExpr je Reading-Definition einmal ausgewertet wird und $oldVal den Wert des Basis-Readings hat, was bei Dir ja nicht existiert.
current_power wird ja nicht erzeugt. Du müsstest also Deine Regex nochmal scharf anschauen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 03 Oktober 2022, 11:07:12
Zitat von: StefanStrobel am 02 Oktober 2022, 12:30:13
Hallo Hauswart,

wie Christian schon geschrieben hat. Wenn Deine Regex eine Liste mit mehr als einem Element zurückliefert, dann werden die einzelnen Elemente zu Readings mit einem -Nummer am Ende.
Dann kann das ganze nicht funktionieren, da die ignoreExpr je Reading-Definition einmal ausgewertet wird und $oldVal den Wert des Basis-Readings hat, was bei Dir ja nicht existiert.
current_power wird ja nicht erzeugt. Du müsstest also Deine Regex nochmal scharf anschauen.

Gruss
   Stefan


Komischerweise erzeugt er eben current_power-1, obwohl der Regex eindeutig sein sollte.

defmod Solar HTTPMOD http://user:pass@IP/status.html 60

attr Solar reading01Name current_power
attr Solar reading01Regex var webdata_now_p = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
attr Solar reading02Name yield_today
attr Solar reading02Regex var webdata_today_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
attr Solar reading03Name total_yield
attr Solar reading03Regex var webdata_total_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))(?:[eE]([+-]?\d+))?"
Quelltext:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
.in_body
{
   margin-top:0px;
   margin-left:0px;
   margin-right:0px;
   margin-bottom:0px;
   background-color:transparent;
}
.div_c
{
   margin-left:50px;
   margin-right:50px;
   margin-top:50px;
   margin-bottom:50px;
}
.cu
{
   cursor:pointer;
}
.b
{
   font-weight:bold;
}
.lab_5
{
   font-size:16px;
   color:#666666;
   margin-left:-20px;
}
.lab_l2
{
   float:left;
   width:32%;
   color:#666666;
   margin-bottom:-2px;
   font-size:14px;
}
.lab_r2
{
   float:left;
   width:68%;
   color:#666666;
   text-align:right;
   font-size:14px;
}
.cl
{
   clear:left;
}
.line
{
   height:1px;
   background-color:#666666;
   width:100%;
   margin-top:5px;
   margin-bottom:5px;
}
.sp_5
{
   height:5px;
   width:500px;
}
.sp_20
{
   height:20px;
   width:500px;
}
.label
{
   float:left;
   width:50%;
   color:#666666;
   margin-bottom:-2px;
   font-size:14px;
}
.lab_r
{
   float:left;
   width:50%;
   color:#666666;
   text-align:right;
   font-size:14px;
}
.lab_l
{
   float:left;
   width:40%;
   color:#666666;
   margin-bottom:-2px;
   margin-left:10%;
   font-size:14px;
}
.line_l
{
   height:1px;
   background-color:#666666;
   width:450px;
   margin-top:5px;
   margin-bottom:5px;
   margin-left:50px;
}
.sub
{
    display:inline-block;
    width:16px;
    text-align:center;
}
</style>
<script type="text/javascript">
var height=0;function fileText(id,value){if(document.getElementById(id)){document.getElementById(id).innerHTML=value}}function changeFont(){reCon("main_div").style.fontFamily=window.parent.reFont()}function child_getH(){var nh=document.body.offsetHeight+100;if(nh<500||nh==null){nh=500}if(height!=nh){height=nh;window.parent.child_height(height)}}function reCon(id){return document.getElementById(id)}function ready(){try{window.parent.show_ifr()}catch(e){}child_getH()}function show(v){var c=document.getElementById(v);if(c!=null){c.style.display=""}}function hide(v){var c=document.getElementById(v);if(c!=null){c.style.display="none"}};
</script>
<script type="text/javascript">
var webdata_sn = "";
var webdata_msvn = "";
var webdata_ssvn = "";
var webdata_pv_type = "";
var webdata_rate_p = "";
var webdata_now_p = "176";
var webdata_today_e = "0.20";
var webdata_total_e = "238.1";
var webdata_alarm = "";
var webdata_utime = "0";
var cover_mid = "";
var cover_ver = "MW3_14_5406_1.33";
var cover_wmode = "APSTA";
var cover_ap_ssid = "";
var cover_ap_ip = "";
var cover_ap_mac = "";
var cover_sta_ssid = "";
var cover_sta_rssi = "40%";
var cover_sta_ip = "";
var cover_sta_mac = "";
var status_a = "1";
var status_b = "0";
var status_c = "0";

function initPageText(){var list=window.parent.reList("status");fileText("st1",list["t1"]);fileText("st2",list["t2"]);fileText("st3",list["t3"]);for(var i=1;i<=27;i++){if(i!=14){fileText("tx"+i,list[i])}}changeFont();child_getH()}function upfold(v){if(document.getElementById("up_"+v+"_div").style.display=="none"){show("up_"+v+"_div");reCon("p_"+v).innerHTML="-"}else{hide("up_"+v+"_div");reCon("p_"+v).innerHTML="+"}}function init_main_page(){var on=window.parent.reTip("1");var off=window.parent.reTip("2");document.getElementById("cover_mid").innerHTML=cover_mid;document.getElementById("cover_ver").innerHTML=cover_ver;document.getElementById("cover_ap_status").innerHTML=off;document.getElementById("cover_sta_status").innerHTML=off;if(cover_wmode!="STA"){document.getElementById("cover_ap_status").innerHTML=on;document.getElementById("cover_ap_ssid").innerHTML=cover_ap_ssid;document.getElementById("cover_ap_ip").innerHTML=cover_ap_ip;document.getElementById("cover_ap_mac").innerHTML=cover_ap_mac}if(cover_wmode!="AP"){document.getElementById("cover_sta_status").innerHTML=on;document.getElementById("cover_sta_ssid").innerHTML=cover_sta_ssid;document.getElementById("cover_sta_rssi").innerHTML=cover_sta_rssi;document.getElementById("cover_sta_ip").innerHTML=cover_sta_ip;document.getElementById("cover_sta_mac").innerHTML=cover_sta_mac}if(webdata_sn==""){webdata_sn="---"}fileText("webdata_sn",webdata_sn);if(webdata_msvn==""){webdata_msvn="---"}fileText("webdata_msvn",webdata_msvn);if(webdata_ssvn==""){webdata_ssvn="---"}fileText("webdata_ssvn",webdata_ssvn);if(webdata_pv_type==""){webdata_pv_type="---"}fileText("webdata_pv_type",webdata_pv_type);if(webdata_rate_p==""){webdata_rate_p="---"}fileText("webdata_rate_p",webdata_rate_p+" W");if(webdata_now_p==""||webdata_now_p==0){webdata_now_p="---"}fileText("webdata_now_p",webdata_now_p+" W");if(webdata_today_e==""){webdata_today_e="---"}fileText("webdata_today_e",webdata_today_e+" kWh");if(webdata_total_e==""){webdata_total_e="---"}fileText("webdata_total_e",webdata_total_e+" kWh");if(webdata_alarm==""){webdata_alarm="---"}fileText("webdata_alarm",webdata_alarm);if(webdata_utime==""){if(document.getElementById("webdata_sn").innerHTML=="---"){webdata_utime="---"}else{webdata_utime=value+window.parent.reTip("5")}}fileText("webdata_utime",webdata_utime);var st_en=window.parent.reTip("3");var st_dis=window.parent.reTip("4");var st_un=window.parent.reTip("41");if(status_a=="1"){document.getElementById("cover_remote_status_a").innerHTML=st_en}else{if(status_a=="0"){document.getElementById("cover_remote_status_a").innerHTML=st_dis}else{document.getElementById("cover_remote_status_a").innerHTML=st_un}}if(status_b=="1"){document.getElementById("cover_remote_status_b").innerHTML=st_en}else{if(status_b=="0"){document.getElementById("cover_remote_status_b").innerHTML=st_dis}else{document.getElementById("cover_remote_status_b").innerHTML=st_un}}};

</script>
</head>
<body class="in_body" onload="init_main_page();">
   <div class="div_c" id="main_div">
        <div class="lab_5 cu b" onclick="upfold(1);child_getH();"><span class="sub" id="p_1">-</span><span id="st1" style="margin-left:3px"></span><>
        <div class="sp_5"><>
        <div id="up_1_div">
        <div class="lab_l2" id="tx1"><>
                <div class="lab_r2" id="webdata_sn"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" id="tx2"><>
                <div class="lab_r2" id="webdata_msvn"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" id="tx3"><>
                <div class="lab_r2" id="webdata_ssvn"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" id="tx4"><>
                <div class="lab_r2" id="webdata_pv_type"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" id="tx5"><>
                <div class="lab_r2" id="webdata_rate_p"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx6"><>
                <div class="lab_r2" id="webdata_now_p" style="color:#666666;font-weight:bold;"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx7"><>
                <div class="lab_r2" id="webdata_today_e" style="color:#666666;font-weight:bold;"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx8"><>
                <div class="lab_r2" id="webdata_total_e" style="color:#666666;font-weight:bold;"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx9"><>
                <div class="lab_r2" id="webdata_alarm" style="color:#666666;font-weight:bold;"><>
        <div class="cl"><>
        <div class="line"><>
        <div class="lab_l2" style="color:#666666;font-weight:bold;" id="tx10"><>
                <div class="lab_r2" id="webdata_utime" style="color:#666666;font-weight:bold;"><>
        <div class="cl"><>
        <div class="line"><>
        <>
        <div class="sp_20"><>
        <div class="lab_5 cu b" onclick="upfold(2);child_getH();"><span class="sub" id="p_2">+</span><span id="st2" style="margin-left:3px"></span><>
                <div class="sp_5"><>
                <div id="up_2_div" style="display:none">
                <div class="label" id="tx11"><>
                <div class="lab_r" id="cover_mid"><>
                <div class="cl"><>
                <div class="line"><>
                <div class="label" id="tx12"><>
                <div class="lab_r" id="cover_ver"><>
                <div class="cl"><>
                <div class="line"><>
                <div class="label" id="tx13"><>
                <div class="lab_r" id="cover_ap_status" style="color:#666666;font-weight:bold;"><>
                <div class="cl"><>
                <div class="line"><>
                <div class="lab_l" id="ap_ssid">SSID<>
                <div class="lab_r" id="cover_ap_ssid"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="lab_l" id="tx15"><>
                <div class="lab_r" id="cover_ap_ip"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="lab_l" id="tx16"><>
                <div class="lab_r" id="cover_ap_mac"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="label" id="tx17"><>
                <div class="lab_r" id="cover_sta_status" style="color:#666666;font-weight:bold;"><>
                <div class="cl"><>
                <div class="line"><>
                <div class="lab_l" id="tx18"><>
                <div class="lab_r" id="cover_sta_ssid"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="lab_l" id="tx19"><>
                <div class="lab_r" id="cover_sta_rssi"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="lab_l" id="tx20"><>
                <div class="lab_r" id="cover_sta_ip"><>
                <div class="cl"><>
                <div class="line_l"><>
                <div class="lab_l" id="tx21"><>
                <div class="lab_r" id="cover_sta_mac"><>
                <div class="cl"><>
                <div class="line_l"><>
                <>
               
                <div class="sp_20"><>
                <div class="lab_5 cu b" onclick="upfold(3);child_getH();"><span class="sub" id="p_3">+</span><span id="st3" style="margin-left:3px"></span><>
                <div class="sp_5"><>
                <div id="up_3_div" style="display:none">
                <div class="label" id="tx25"><>
                <div class="lab_r" id="cover_remote_status_a"><>
                <div class="cl"><>
                <div class="line"><>
                <div class="label" id="tx26"><>
                <div class="lab_r" id="cover_remote_status_b"><>
                <div class="cl"><>
                <div class="line"><>
                <>
    <>
   <script type="text/javascript">
       initPageText();
       ready();
   </script>
</body>
</html>
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 03 Oktober 2022, 21:45:56
Hallo Hauswart,

vielleicht reden wir da aneinander vorbei. Es geht nicht darum, ob die Regex nur an einer Stelle passt, sondern ob sie nur einen Wert oder mehrere Werte liefert. So wie ich Deine Regexes lese, sind da mehrere capture groups drin und dann gibt es mehrere Ergebnisse.
Wenn Du verbose auf 5 stellst, dann siehst Du das auch im Log.
Such da mal nach Einträgen von ExtractReading.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 05 Oktober 2022, 09:22:11
Ich habe glaub das Problem gefunden:

defmod Solar HTTPMOD http://user:pass@IP/status.html 60

attr Solar reading01Name current_power
attr Solar reading01Regex var webdata_now_p = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))"
attr Solar reading02Name yield_today
attr Solar reading02Regex var webdata_today_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))"
attr Solar reading03Name total_yield
attr Solar reading03Regex var webdata_total_e = "([+-]?(?=\.\d|\d)(?:\d+)?(?:\.?\d*))"

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Hauswart am 11 Oktober 2022, 10:28:48
Zitat von: StefanStrobel am 19 August 2022, 15:21:27
Hallo,

anbei eine neue Version zum Testen.
Darin habe ich das IgnoreExpr-Attribut vom Modbus-Modul übernommen. Doku fehlt noch.
Beispiel:
attr reading01IgnoreExpr $val <= $oldVal
Ignoriert alle Werte wenn sie nicht größer alles der bisherige Wert sind. Dann wird das Reading nicht geschrieben.

Gruß
   Stefan


Nun konnte ich es endlich testen und es funktioniert aus meiner Sicht. Kannst du es bitte deployen?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 Oktober 2022, 13:34:37
Hallo zusammen,

ich müsste beim set*data eine Umformatierung verwenden.
Leider bekomme ich die Ausgabe von set2404IExpr nicht in das set2404Data rein geschrieben.

## Aus dem Perl von IExpr kommt entweder der Inhalt vom reading Battery_TimeControl_3_Mi oder z.b. 96 mal die Wiederholung von $val
## Auf der FHEM Kommando Zeile funktioniert der Perl Code bereits
## Wie wäre die Zuweisung der Perl Ausgabe in das $val zu realisieren?
attr WR_1_API set2404IExpr my $x = ReadingsVal($name,"Battery_TimeControl_3_Mi","null");; $x=~s/\s//gs;; ($x eq "null")? $val x96:$x

attr WR_1_API set2404Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfWed","value":"$val"}]}]


EDIT:
Nun habe ich noch mehr getestet und es scheint am

($x eq "null")? $val x96:$x

zu liegen, wenn die Bedigung eq "null" ist, wird das "$val x96" ausgeführt, ansonsten kommt in $val immer eine 0 zurück.
Wie weiter unten geschrieben, klappt das in der Kommando Zeile.


EDIT:
Hier ist noch das Verbose 5 Log von der Stelle

2022.10.11 14:24:05.685 4: WR_1_API: HandleSendQueue sends set2404 with timeout 7 to http://192.168.178.18/api/v1/settings,
data: [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfWed","value":"0"}]}],                                           <<<<<<<<<<<<< Hier müsste 96 mal die 1 als value stehen
header: authorization: Session 574b51f0a01ec5b8aa64b2ee5ae74d444141aa6c7c6cebd3549e0058039647a4
Content-type:application/json, Accept:application/json, Connection:keep-alive
2022.10.11 14:24:05.687 4: WR_1_API: chaining to get 24_Battery_TimeControl due to attr set2404FollowGet, Level 1
2022.10.11 14:24:05.687 5: WR_1_API: get called with 24_Battery_TimeControl
2022.10.11 14:24:05.688 5: WR_1_API: get found option 24_Battery_TimeControl in attribute get24Name
2022.10.11 14:24:05.688 4: WR_1_API: get will now request 24_Battery_TimeControl, no optional value
2022.10.11 14:24:05.693 5: WR_1_API: AddToQueue adds type get24 to URL http://%IP-WR%/api/v1/settings/devices:local/Battery:TimeControl:Enable,Battery:TimeControl:ConfMon,Battery:TimeControl:ConfTue,Battery:TimeControl:ConfWed,Battery:TimeControl:ConfThu,Battery:TimeControl:ConfFri,Battery:TimeControl:ConfSat,Battery:TimeControl:ConfSun, no data, header authorization: Session %auth_sessionId%
Content-type: application/json, Accept: application/json, Connection: keep-alive, retry 0, initial queue len: 0
2022.10.11 14:24:05.693 5: WR_1_API: HandleSendQueue called from AddToSendQueue, qlen = 1
2022.10.11 14:24:05.693 5: WR_1_API: StartQueueTimer called from ReadyForSending sets internal timer to process queue in 1.000 seconds, still waiting for reply to last request
2022.10.11 14:24:05.914 5: WR_1_API: ReadCallback called from __ANON__
2022.10.11 14:24:05.915 4: WR_1_API: Read callback: request type was set2404 retry 0,
header: HTTP/1.1 404 NOT FOUND
Server: nginx/1.15.2
Date: Tue, 11 Oct 2022 12:24:05 GMT
Content-Type: application/json
Content-Length: 42
Connection: close
Access-Control-Allow-Origin: *, body length 42
2022.10.11 14:24:05.915 5: WR_1_API: Read callback: body
{"message":"module or setting not found"}

Ich vermute die 0 als value wird der Return Code  vom eval sein.

In der Kommando Zeile geht auch folgendes

{ my $val = 1;;my $x = ReadingsVal("WR_1_API","Battery_TimeControl_0_So","null");; $x=~s/\s//gs;; ($x eq "null")? $val x96:$x }
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
## die 0en stehen in dem reading ;-)


Beim get funktioniert dieser Syntax übrigens

get24-1OExpr my @x = ( $val =~ m/.{4}/g ); my $x = $x[0];for(my $i = 1;$i < @x;$i++) { $x = $x." ".$x[$i]}; $x


VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Oktober 2022, 17:01:14
Hallo Christian,

der spannende Teil müsste im Log ein paar Zeilen höher stehen.
Zudem wäre es fürs Verständnis wichtig Die volle Konfiguration des Set und der relevanten Readings zu kennen.

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 Oktober 2022, 17:32:21
Zitat von: StefanStrobel am 11 Oktober 2022, 17:01:14
Hallo Christian,

der spannende Teil müsste im Log ein paar Zeilen höher stehen.
Zudem wäre es fürs Verständnis wichtig Die volle Konfiguration des Set und der relevanten Readings zu kennen.

Gruß
   Stefan
Hallo Stefan und danke für die Rückmeldung

ich meine es jetzt gefunden zu haben.

Weiter oben im Log stand leider nichts, da die Ersetzung gar nicht durchlaufen wurde :-)

Durch die Verwendung von "set[0-9]*NoArg" habe ich mir wohl die Evaluierung mit "set[0-9]+IExpr" selber ausgehebelt.
Ursprünglich hatte ich vor mit "set[0-9]*hint 0,1,2," im pulldown Menü auch eine leere Eingabe zuzulassen.
Dies habe ich jetzt auf die Auswahl einer Text Strings geändert und das "set[0-9]*NoArg" daraufhin gelöscht.
Momentan sieht es so aus, dass ich jetzt weiter komme.

Soll ich meinen letzten Post wieder löschen, damit niemand verwirrt wird?

VG   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 11 Oktober 2022, 17:45:45
Hallo Christian,

vielleicht hilft es ja jemandem mit einem ähnlichen Problem. Die Ursache / Lösung ist ja jetzt bekannt. Ich schau auch mal ob ich die Kombination IExpr und NoArg im Modul sinnvoll ermöglichen kann.


Gruß
    Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 11 Oktober 2022, 18:04:44
Zitat von: StefanStrobel am 11 Oktober 2022, 17:45:45
vielleicht hilft es ja jemandem mit einem ähnlichen Problem. Die Ursache / Lösung ist ja jetzt bekannt. Ich schau auch mal ob ich die Kombination IExpr und NoArg im Modul sinnvoll ermöglichen kann.
Hallo Stefan,
aber nur wenn es Sinn macht, man kann es ja auch wie folgt mit einem String machen

attr WR_1_API set2404Name 24__3_Battery_TimeControl_Mi
attr WR_1_API set2404URL http://%IP-WR%/api/v1/settings
attr WR_1_API set2404Header01 authorization: Session %auth_sessionId%
attr WR_1_API set2404Header02 Content-type:application/json, Accept:application/json, Connection:keep-alive
attr WR_1_API set2404Method PUT

attr WR_1_API set2404Hint 0,1,2,Battery_TimeControl_3_Mi
attr WR_1_API set2404TextArg 1

attr WR_1_API set2404IExpr my $x = ReadingsVal($name,$val,"null");; $x=~s/\s//gs;; ($val =~ /^-?\d+$/)? $val x96 : ($x =~ /^-?\d+$/)? $x : 0 x96
attr WR_1_API set2404Data [{"moduleid":"devices:local","settings":[{"id":"Battery:TimeControl:ConfWed","value":"$val"}]}]

attr WR_1_API set2404FollowGet 24_Battery_TimeControl


Bei dieser Konfiguration geht es darum einen Formatierten String in den readings zu haben, der wie folgt aussieht

Battery_TimeControl_3_Mi 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000

Jede Stelle kann [0-2] annehmen und jeder 4er Block entspricht einer Stunde, somit gibt es 24 Blöcke. Die Trennung in Blöcke habe ich wegen der Lesbarkeit eingeführt.
Zum Senden muss die dann jedoch wieder ohne Blanks sein.

Beim set hat man nun die Möglichkeit
-  [0-2] auswählen, was dann wiederum einheitlich 96 mal geschrieben wird.
-  Den Text zu wählen, was dann versucht das reading zu lesen
   ist das reading nicht vorhanden wird wiederum 96 mal 0 geschrieben, was einem abschalten innerhalb des Gerätes gleich kommt.
-  Das jeweilige reading kann jedoch auch aus einem anderen Device in dieses geschrieben werden, was eine Formatierung des gesamten Strings mit [0-2] durch eine Funktion ermöglicht.

Angewendet habe ich es dann hier. (https://forum.fhem.de/index.php/topic,114849.msg1239061.html#msg1239061)

VG
   Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 26 November 2022, 08:47:45
Ich durfte mich soeben auch mit IExpr beschäftigen, es klappt alles wie erwartet:


attr foo set1Data [{"name":"bar", "value":"$val"}]
attr foo set1Name Foobar
attr foo set1IExpr $val*100


sendet - falls "set Foobar 2" gesetzt wird - korrekt [{"name":"bar", "value":"200"}]. Vielleicht könnte man die Doku noch ergänzen? Ein Vorschlag:


set[0-9]+IExpr
Perl Expression to compute the raw value to be sent to the device from the input value passed to the set. E.g. "$val*100" will multiply $val by 100 after a set command, the thusly modified $val will then be used in subsequent processing, e.g. "(get|set)[0-9]*Data" will use the modified $val
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 26 November 2022, 09:44:19
Ah und noch eine Frage: ich habe eine M-Tec Wärmepumpe die leider nur sehr begrenzte Modbusregister anbietet. Also frage ich alles via HTTPMOD ab, das klappt auch wunderbar. Ich muss dazu allerdings 2 HTTPMOD Instanzen nehmen, eine für das Auslesen und eine für das Setzen. Grundsätzlich läuft die Kommunikation wie folgt:

Ein HTTP Post mit

[
  {
    "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue"
  },
  {
    "name": "APPL.CtrlAppl.sParam.outdoorTemp.values.actValue"
  }
]


liefert dann


[
  {
    "name": "APPL.CtrlAppl.sParam.heatCircuit[0].values.setValue",
    "value": "20.5"
  },
  {
    "name": "APPL.CtrlAppl.sParam.outdoorTemp.values.actValue",
    "value": "3.993516"
  }
]


zurück.

Folgende Fragen habe ich

Also quasi zusammengefasst: wie kann ich das Verhalten von HTTPMOD dem des Modbus Modules anpassen? 1 Register mit 1 Name welches gelesen und beschrieben werden kann und wo mehrere "Register" gebündelt mitgeschickt werden (damit nicht 40 einzelne Anfragen innerhalb kürzester Zeit auf die Wärmepumpensteuerung hereinprasseln)?

Danke vielmals!

Hier noch für die Vollständigkeit die beiden "Get/Set" Devices:


defmod WP_Get HTTPMOD http://wp/var/readWriteVars?languageCode=de 20
attr WP_Get enableControlSet 1
attr WP_Get enableCookies 1
attr WP_Get enforceGoodReadingNames 1
attr WP_Get handleRedirects 1
attr WP_Get reading01Name Umwaelzpumpenleistung_WPLK_Prozent

attr WP_Get reading01Regex heatCircuit\[0\]\.param\.normalSetTemp","value":"([\d\.]+)"
attr WP_Get reading01Name Raumtemp_Normal
attr WP_Get reading02Regex heatCircuit\[0\]\.param\.reducedSetTemp","value":"([\d\.]+)"
attr WP_Get reading02Name Raumtemp_Abgesenkt

attr WP_Get requestData [\
  {\
    "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp"\
  },\
  {\
    "name": "APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp"\
  }
 
  etc. etc. etc. (ca 40 weitere Werte)
 
]
attr WP_Get requestHeader1 Content-Type: application/json
attr WP_Get requestHeader2 Accept: */*


und


[code]
define WP_Set HTTPMOD http://wp/var/readWriteVars?action=set
attr WP_Set enableControlSet 1
attr WP_Set enableCookies 1
attr WP_Set enforceGoodReadingNames 1
attr WP_Set handleRedirects 1
attr WP_Set requestHeader1 Content-Type: application/json
attr WP_Set requestHeader2 Accept: */*

attr WP_Set set1Data [{"name":"APPL.CtrlAppl.sParam.heatCircuit[0].param.normalSetTemp", "value":"$val"}]
attr WP_Set set1Name Raumtemp_Normal
attr WP_Set set2Data [{"name":"APPL.CtrlAppl.sParam.heatCircuit[0].param.reducedSetTemp", "value":"$val"}]
attr WP_Set set2Name Raumtemp_Abgesenkt

etc. etc. etc.....

[/code]
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 26 November 2022, 11:09:42
Zitat von: ansgru am 26 November 2022, 09:44:19
Ah und noch eine Frage: ich habe eine M-Tec Wärmepumpe die leider nur sehr begrenzte Modbusregister anbietet. Also frage ich alles via H Grundsätzlich läuft die Kommunikation wie folgt:
Moin,
ich habe nicht alles gelesen, Du kannst jedoch alles in ein Device unterbringen, also get und set und das auch noch in vielen Varianten.
Zusätzlich gibt es noch ein Follow* mit dem Du auch mehrere get oder set miteinander verketten kannst.

Beim define wird dann die Zeit auf 0 gesetzt

defmod WP_Get HTTPMOD http://wp/var/readWriteVars?languageCode=de 0

Das Scheduling mache ich dann über ein DOIF, was noch weitere Funktionalitäten für das Device abwickeln kann und es im FHEMWEB mit uiTable sehr schön Darstellen kann.

my5cent
    Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 26 November 2022, 21:32:14
Danke dir Christian, das FollowGet habe ich zwar gesehen, aber nicht im Zusammenhang mit diesem Verwendungszweck (mehrere Get Abfrage zusammen verknüpfen). Allerdings werden so nach meinem Verständnis immer noch einzelne Get Abfragen losgeschickt? Also quasi kein "Combine" wie bei Modbus sondern einfach alle verknüpften Anfragen nacheinander?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 27 November 2022, 11:00:01
Zitat von: ansgru am 26 November 2022, 21:32:14
Danke dir Christian, das FollowGet habe ich zwar gesehen, aber nicht im Zusammenhang mit diesem Verwendungszweck (mehrere Get Abfrage zusammen verknüpfen). Allerdings werden so nach meinem Verständnis immer noch einzelne Get Abfragen losgeschickt? Also quasi kein "Combine" wie bei Modbus sondern einfach alle verknüpften Anfragen nacheinander?
Das ist richtig, jedoch werden sie synchronisiert und warten aufeinander.
Sollten alle Informationen auf einer Http Seite zusammen sein ist es natürlich besser nur einen Abruf zu starten.
Wenn man etwas setzt (set) kann man damit anschließend die Änderung wieder abfragen.

VG Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 November 2022, 19:04:51
Zitat von: ansgru am 26 November 2022, 09:44:19
Also quasi zusammengefasst: wie kann ich das Verhalten von HTTPMOD dem des Modbus Modules anpassen? 1 Register mit 1 Name welches gelesen und beschrieben werden kann und wo mehrere "Register" gebündelt mitgeschickt werden (damit nicht 40 einzelne Anfragen innerhalb kürzester Zeit auf die Wärmepumpensteuerung hereinprasseln)?

Hallo ansgru,

das geht leider nicht. Dazu sind die Web-Server zu unterschiedlich. In machen Fällen wie in Deinem wäre so etwas zwar denkbar, aber in vielen anderen versteht der Server eine solche Kombination von Anfragen nicht.

Ich würde an Deiner Stelle selbst mehrere gets definieren. Einen für die kombinierten Sachen, die häufig über das Intervall abgefragt werden und einen weiteren für die Kombination der anderen Werte, die nur selten abzufragen sind. Den würde ich dann separat per at o.ä. auslösen.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 27 November 2022, 22:52:54
Ok, danke dir vielmals Stefan! Dann werde ich in Ruhe überlegen, welche Daten ich wie oft brauche und das auf entsprechende HTTPMOD Devices mit unterschiedlichen Polling-Intervalen verteilen.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 28 November 2022, 08:03:45
Zitat von: ansgru am 27 November 2022, 22:52:54
Ok, danke dir vielmals Stefan! Dann werde ich in Ruhe überlegen, welche Daten ich wie oft brauche und das auf entsprechende HTTPMOD Devices mit unterschiedlichen Polling-Intervalen verteilen.
Wie bereits beschrieben geht das in einem Device und man macht dann ein separates Scheduling.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 08 Dezember 2022, 15:31:22
Zitat von: ch.eick am 28 November 2022, 08:03:45
Wie bereits beschrieben geht das in einem Device und man macht dann ein separates Scheduling.

Hallo Christian,

oups, sorry, deinen Beitrag erst jetzt gesehen. Das Problem ist dann glaub ich, dass HTTPMOD die Anfragen nicht zusammenfassen kann. Ich habe im Moment ca. 40 Werte die ich regelmässig abfrage (werden noch mehr). Im Moment frage ich die Werte alle 20s alle zusammen ab (via "RequestData", siehe weiter oben). Für gewisse Werte reichen allerdings 5min, andere möchte ich alle paar Sekunden abfragen. D.h. dann auch, es würden alle paar Sekunden gleich mehrere POST Requests auf die arme Steuerung einprasseln wenn ich für jeden Wert eine separate Abfrage definiere :D Da splitte ich lieber meine HTTPMOD Devices in z.B. ein Device "HTTPMOD_5s", "HTTPMOD_1min" etc. und packe die gesammelten Anfragen dort rein -> kann dann immer noch bei Bedarf alles an einen Dummy senden damit ich alle Werte zentral habe. Oder ich bleibe bei einem Device und 1 RequestData mit allen Daten, dann liefert mir die Steuerung halt immer alle Werte. Da kann ich dann immer noch mit event-min-intervall o.Ä. die Events drosseln damit nicht alle 20s für jeden der 40 Werte ein Event ausgelöst wird.

Das geht mit Modbus ja alles viel einfacher und eleganter, ich verstehe die technischen Limitationen vom HTTPMOD Module (resp. das es keinen Standard gibt) und kann damit tiptop leben, braucht einfach ein Umdenken :-)

Beste Grüsse, Anton
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 08 Dezember 2022, 15:54:11
Hallo,

ich habe hier nicht den kompletten Thread durchgelesen, möchte aber kurz mein Problem beschreiben.

Beim Auslesen einer JSON-API liefert mir HTTPMOD zeitweise keine Daten und zwar immer dann, wenn ein Status-Wert einen Umlaut enthält (ß). Daher habe ich es mit dem Attribut "bodyDecode=utf-8" probiert - ohne Erfolg.

Dann habe ich folgenden Tipp gelesen, bei dem der Code von "Utils.pm" verändert wird:


Zeile 34:
Code: [Auswählen]
#use Encode          qw(decode encode);
use Encode          qw(decode encode encode_utf8);
und Zeile 691:
Code: [Auswählen]
# my $decoded = eval { decode_json($buffer) };
my $decoded = eval { decode_json(encode_utf8($buffer)) };


Geht es auch ohne diese Code-Änderung? Könnte mir jemand auf die Sprünge helfen?

Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 08 Dezember 2022, 16:10:21
Hast du mal "bodyDecode utf8" ausprobiert? Resp. "(get|set|reading)[0-9]*Decode/Encode" und dann auch "utf8"?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 09 Dezember 2022, 12:49:42
...ich probiere es aus und melde mich wieder
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 09 Dezember 2022, 14:20:07
Rückmeldung: mit "bodyDecode utf8" geht es auch nicht. Wie würde denn das Umwandeln eines einzelnen Readings aussehen?

reading24JSON ww1_L\_statetext

Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 13 Dezember 2022, 08:26:06
Ich glaube "attr blibla reading24Decode utf8" ?

Edit: kann es sein, dass die Encodings eben NICHT in UTF-8 vorliegen? Was für ein Encoding verwendet denn dein Browser (=abzufragende Seite z.B. im Firefox öffnen, Inspektor öffnen -> Netzwerkanalyse -> Seite neu laden und dann unter "Headers" schauen, was für ein Encoding verwendet wird, z.B. "Content-Type: application/json;charset=utf-8" bei mir)?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 13 Dezember 2022, 14:34:32
Hi, ich habe eine Frage, an der beiß ich mir die Zähne aus, aufgrund der vielen Möglichkeiten...

Ich rufe eine URL auf und parse davon Werte in zwei Readings (globaleSzenen und lastScene).

Internals:
   BUSY       0
   DEF        http://192.168.178.28/ocf/sceneCollection/0 0
   FUUID      61918943-f33f-0804-830d-89dcaff34995df3e
   Interval   0
   MainURL    http://192.168.178.28/ocf/sceneCollection/0
   ModuleVersion 4.1.14 - 19.8.2022
   NAME       HT_Globale_Szenen
   NOTIFYDEV  global
   NR         611
   NTFY_ORDER 50-HT_Globale_Szenen
   STATE      Home
   TYPE       HTTPMOD
   eventCount 9612
   value     
   HttpUtils:
     NAME       
     addr       http://192.168.178.28:80
     auth       0
     buf       
     code       200
     compress   1
     conn       
     data       
     displayurl http://192.168.178.28/ocf/sceneCollection/0
     header     
     host       192.168.178.28
     httpheader HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Tue, 13 Dec 2022 13:06:08 GMT
Content-Type: application/json
Content-Length: 1564
Connection: close
Strict-Transport-Security: max-age=63072000; includeSubDomains; preload
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    80
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /ocf/sceneCollection/0
     protocol   http
     redirects  0
     timeout    2
     url        http://192.168.178.28/ocf/sceneCollection/0
     sslargs:
   OLDREADINGS:
   QUEUE:
   READINGS:
     2022-12-13 14:06:08   SetValues       0,0,0
     2022-12-13 14:06:08   globaleSzenen   Home Away Sleep
     2022-12-13 13:43:42   lastScene       Home
   REQUEST:
     context    get
     data       
     header     
     ignoreredirects 0
     num        01
     retryCount 0
     type       get01
     url        http://192.168.178.28/ocf/sceneCollection/0
     value     
   defptr:
     readingBase:
       globaleSzenen get
       lastScene  get
     readingNum:
       globaleSzenen 01
       lastScene  02
     readingOutdated:
     requestReadings:
       get01:
         globaleSzenen get 01
       get02:
         lastScene  get 02
   lastpoll:
     globaleSzenen 1670935419.77895
     lastScene  1670935419.77895
Attributes:
   enableControlSet 1
   enforceGoodReadingNames 1
   get01JSON  sceneValues
   get01Name  globaleSzenen
   get01RecombineExpr join " ", @matchlist
   get02JSON  lastScene
   get02Name  lastScene
   icon       hm-tc-it-wm-w-eu
   room       WISER
   set01Data  {"isIrrelevant": false,"lastScene": "$val"}
   set01Name  SetValues:Home,Away,Sleep
   set01TextArg 1
   set01URL   http://192.168.178.28/ocf/sceneCollection/0
   stateFormat lastScene



globaleSzenen ist eine Space-seperierte Liste von drei Werten und lastScene ein einzelner Wert.

Aktuell setze ich mit  set01Name  SetValues:Home,Away,Sleep diese 3 Werte manuell als Set-Werte, damit ich beim Set Werte als Auswahl habe.

1. Ich würde gern das ganze dynamische haben und die Liste der Werte die ich mit get01JSON  bekomme, gleich als setListe automatisch zur Verfügung haben?!
2. Die Übergabe bei set HT_Globale_Szenen SetValues (Home,Away,Sleep) soll dann in den POST Request Body unter $val.

Kann mir jemand beim richtigen Ansatz dafür helfen?!
Danke
VG
René

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 13 Dezember 2022, 18:31:58
ZitatEdit: kann es sein, dass die Encodings eben NICHT in UTF-8 vorliegen? Was für ein Encoding verwendet denn dein Browser (=abzufragende Seite z.B. im Firefox öffnen, Inspektor öffnen -> Netzwerkanalyse -> Seite neu laden und dann unter "Headers" schauen, was für ein Encoding verwendet wird, z.B. "Content-Type: application/json;charset=utf-8" bei mir)?

Bei mir sehen die Header-Infos so aus:


GET /xxx/all HTTP/1.1
Host: 192.168.99.208:4321
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1


Hier ist kein "Content-Type" enthalten... (?)

Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: l-j-silver am 14 Dezember 2022, 09:25:27
Zitat von: ansgru am 13 Dezember 2022, 08:26:06
Ich glaube "attr blibla reading24Decode utf8" ?

Edit: kann es sein, dass die Encodings eben NICHT in UTF-8 vorliegen? Was für ein Encoding verwendet denn dein Browser (=abzufragende Seite z.B. im Firefox öffnen, Inspektor öffnen -> Netzwerkanalyse -> Seite neu laden und dann unter "Headers" schauen, was für ein Encoding verwendet wird, z.B. "Content-Type: application/json;charset=utf-8" bei mir)?

Hi,

Ökofen nutzt für JSON cp1252. Ich kann aber nicht sagen, ob es mit httpmod unterstützt wird und wie man es richtig verwendet.

Grüße Toni

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 14 Dezember 2022, 11:06:43
Zitat von: blueberry63 am 13 Dezember 2022, 18:31:58
Bei mir sehen die Header-Infos so aus:


GET /xxx/all HTTP/1.1
Host: 192.168.99.208:4321
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:107.0) Gecko/20100101 Firefox/107.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Connection: keep-alive
Upgrade-Insecure-Requests: 1


Hier ist kein "Content-Type" enthalten... (?)

Gruß
Blueberry63

Öffne doch mal die Seite in Firefox (also die URL, die du in HTTPMOD aufrufst). Dann "Strg + I" um die Seiteninformationen anzuzeigen -> Was steht bei Textkodierung? Vielleicht cp1252? Und stimmen die Umlaute wenn du die Seite in Firefox anschaust? Was auch immer hilfreich ist: Quelltext in Notepad++ kopieren, dort kannst du mit den Kodierungen spielen und so herausfinden, welche Kodierung verwendet wird und - falls du eine andere Kodierung auswählst - wie dann die Umlaute dargestellt werden (resp. welche Kodierung es braucht, damit die Umlautet korrekt angezeigt werden).
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 14 Dezember 2022, 13:08:22
Ok, hier ist das Ergebnis:

Textkodierung: windows-1252

Und ja: es handelt sich um eine ÖkoFEN-Pelletanlage. Das Problem mit der Decodierung passiert allerdings nur "außerhalb" des Zeitprogramms, nur dann taucht "ß" im Body auf; andere Umlaute gibt es nicht.

Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 14 Dezember 2022, 13:36:12
Zitat von: blueberry63 am 14 Dezember 2022, 13:08:22
Ok, hier ist das Ergebnis:

Textkodierung: windows-1252

Und ja: es handelt sich um eine ÖkoFEN-Pelletanlage. Das Problem mit der Decodierung passiert allerdings nur "außerhalb" des Zeitprogramms, nur dann taucht "ß" im Body auf; andere Umlaute gibt es nicht.

Was passiert bei "attr blibla reading24Decode cp1252" ?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 14 Dezember 2022, 15:56:15
ZitatWas passiert bei "attr blibla reading24Decode cp1252" ?

Egal, was ich hier auf Reading-Level versuche (cp1525, cp 1525, cp-1525) funktioniert nicht: es kommen überhaupt keine Daten mehr.

Anscheinend muss "bodyDecode" verwendet werden, aber welche Werte kann/muss man hier setzen? Wenn man einen falschen Wert/Syntax einträgt, hängt sich FHEM auf; Fehlermeldung im LOG (Bsp,.):

Unknown encoding 'en-US' at lib/FHEM/HTTPMOD/Utils.pm line 775.


Wenn ich mir die Änderungen in Utils.pm anschaue (mit denen es ja funktioniert), dann wird doch ein "Encoding utf8" erzwungen, oder?

Zeile 33/34:
Code: [Auswählen]
#use Encode          qw(decode encode);
use Encode          qw(decode encode encode_utf8);
und Zeile 692/693:
Code: [Auswählen]
# my $decoded = eval { decode_json($buffer) };
my $decoded = eval { decode_json(encode_utf8($buffer)) };


Muss man hier vielleicht ansetzen?


Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 Dezember 2022, 19:07:17
Hallo,

die JSON-Verarbeitung passiert in HTTPMOD nach dem bodyDecode und vor dem enode / decode der Readings.
Wenn sich die JSON-Bibliothek an Sonderzeichen verschluckt, dann kann das nur durch korrekte Umwandlung vorher beseitigt werden.
Dazu ist bodyDecode da. Eigenlich sollte bodyDecode cp1251 die richtige Einstellung sein. Es sei denn die Perl-Funktion decode kommt mit dein Eingangsdaten auch nicht klar, weil es noch eine andere Kodierung ist.
Dass ein encode auf utf-8 vorab die richtige Lösung sein soll, wundert mich. Bleiben dabei die Umlaute und das ß korrekt erhalten??
Das würde wieder dagegen sprechen dass der Eingangstext cp1252 ist.
Könnte jemand eine Datei mit den Originaldaten posten, damit ich das testen kann?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: l-j-silver am 15 Dezember 2022, 19:17:43
Zitat von: StefanStrobel am 15 Dezember 2022, 19:07:17
Hallo,

die JSON-Verarbeitung passiert in HTTPMOD nach dem bodyDecode und vor dem enode / decode der Readings.
Wenn sich die JSON-Bibliothek an Sonderzeichen verschluckt, dann kann das nur durch korrekte Umwandlung vorher beseitigt werden.
Dazu ist bodyDecode da. Eigenlich sollte bodyDecode cp1251 die richtige Einstellung sein. Es sei denn die Perl-Funktion decode kommt mit dein Eingangsdaten auch nicht klar, weil es noch eine andere Kodierung ist.
Dass ein encode auf utf-8 vorab die richtige Lösung sein soll, wundert mich. Bleiben dabei die Umlaute und das ß korrekt erhalten??
Das würde wieder dagegen sprechen dass der Eingangstext cp1252 ist.
Könnte jemand eine Datei mit den Originaldaten posten, damit ich das testen kann?

Gruss
   Stefan

Hallo Stefan,

Json_decode funktioniert nur mit utf-8 encoded strings.

Ich kann dir nachher gerne eine Datei mit Original Daten senden.

Grüße Toni
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 15 Dezember 2022, 21:39:25
ZitatBleiben dabei die Umlaute und das ß korrekt erhalten??

Wenn ich die ÖkoFEN-API über die URL im Browser aufrufe, werden in der Ausgabe die Umlaute richtig  dargestellt (hier: ß).

Soll ich meine Ausgabe auch noch hier posten? 
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 16 Dezember 2022, 16:47:15
Vielen Dank, ich schau es mir an.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 17 Dezember 2022, 15:29:06
Hallo,

anbei eine neue Version zum Testen.
Es gibt ein neues Attribut bodyEncode. Wenn man das auf utf8 setzt, dann wird für den body nach einem eventuellen Decode noch ein encode mit utf8 aufgerufen. Möglicherweise sollte das sogar immer gemacht werden, ich möchte jedoch vermeiden, dass es dadurch bei Leuten, die es bisher ohne encode verwenden zu Verhaltensänderungen kommt.

Gruss
   Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: l-j-silver am 17 Dezember 2022, 16:58:12
Zitat von: StefanStrobel am 17 Dezember 2022, 15:29:06
Hallo,

anbei eine neue Version zum Testen.
Es gibt ein neues Attribut bodyEncode. Wenn man das auf utf8 setzt, dann wird für den body nach einem eventuellen Decode noch ein encode mit utf8 aufgerufen. Möglicherweise sollte das sogar immer gemacht werden, ich möchte jedoch vermeiden, dass es dadurch bei Leuten, die es bisher ohne encode verwenden zu Verhaltensänderungen kommt.

Gruss
   Stefan

Hallo Stefan,

vielen Dank. Für mich hat es geklappt.

vielleicht sollte noch eine Prüfung eingebaut werden, wenn ein falscher Wert eingegeben wird.

Ich hatte zuerst versehentlich "attr Heizung bodyDecode uff8" eingegeben und da hat sich fhem aufgegangen.

Danke.

Grüße Toni
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 18 Dezember 2022, 11:16:52
Hallo Stefan,

auch bei mir funktioniert es jetzt und zwar wenn ich "bodyEncode=utf8" und "bodyDecode=none" (oder weglasse) setze.

Setze ich "bodyEncode=utf8" und "bodyDecode=utf8", wird das "ß" nicht richtig dargestellt, aber ich bekomme wenigstens die Daten geliefert.

Vielen Dank für die schnelle Umsetzung!

Gruß
Blueberry63

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Gisbert am 20 Dezember 2022, 09:57:11
Hallo Stefan,

ich möchte gerne Börsenindizes auslesen.
Ich hab das in der Vergangenheit immer wieder versucht, es lief dann eine zeitlang, bis sich wieder etwas an der aufgerufenen Seite geändert hat.

Ich wollte jetzt  einen neuen Versuch starten und die Daten von https://www.onvista.de/index auslesen.
Dazu habe ich folgendes definiert:
defmod myIndex HTTPMOD https://www.onvista.de/index 600
attr myIndex reading01Name DAX
attr myIndex reading01XPath-Strict /html/body/div[1]/div[2]/div/section/div[4]/div/div/div[1]/div/div[2]/div[1]/div[1]/data

Den Inhalt des Attribut reading01XPath-Strict habe ich aus der Seite kopiert, mit dem Addon xPath im Firefox.
Dannach gab es diese Meldung im logfile (nur die beiden ersten Zeilen, es geht dann ellenlang weiter):
2022.12.20 09:30:48.814 3: myIndex: error in find for XPathStrictNodeset:
not well-formed (invalid token) at line 1, column 47144, byte 47202:

Ein Reading wurde nicht erstellt.

Mein Ziel ist den Indexwert und die prozentuale Änderung verschiedener Börsenindices auszulesen.
Falls etwas Funktionierendes bei dieser oder einer anderen Seite bereits existiert, was ich nur zu kopieren brauche, dann nehme ich das sehr gerne.

Viele Grüße Gisbert
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 22 Dezember 2022, 18:07:05
Hi,

kann man bei HTTPMOD auch zwei Werte für einen Set übergeben?!
Ich möchte gern einen Wert in der URL ersetzen und in den gesendeten Daten:

set03Data {"action" : $val}
set03Hint 0,1,2
set03Name Taster
set03URL  %Taster_URL%
replacement03Mode reading
replacement03Regex  %Taster_URL%
replacement03Value Taster_URL


Die Werte für action in set03Data kann ich ersetzen bzw übergeben.
Die URL sieht so aus und wird vorher gesetzt und dann genutzt: http://192.168.178.28/ocf/wlss97/shutter/1

Ich würde aber gern einfach zwei Werte an das Set senden und den Bereich "wlss97" ersetzen.
Weiß nicht ob das geht?!

VG
René
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 02 Januar 2023, 18:21:19
ZitatEs gibt ein neues Attribut bodyEncode

Ich habe heute ein Update in FHEM gemacht. Kann es sein, dass "bodyEncode" noch nicht "released" wurde?

Gruß
Blueberry63
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 12 Januar 2023, 18:41:57
Hallo,

die neue Version mit bodyEncode ist jetzt eingecheckt.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OdfFhem am 13 Januar 2023, 07:25:19
@StefanStrobel

Bislang in Zeile #510

        elsif ($aName =~ /((get|set)[0-9]*)?[Rr]eplacement([0-9]*)Value/) {

mit dem neuen Stand in Zeile #513

        elsif ($aName =~ /((get|set)[0-9]*)?[Rr]eplacement([0-9]*)Value/) {


Die davon abhängige Zeile #515 (im neuem Stand)

            if (AttrVal($name, "replacement${2}Mode", "text") eq "expression") {

verursacht wohl den in https://forum.fhem.de/index.php/topic,131104.msg1256255.html#msg1256255 (https://forum.fhem.de/index.php/topic,131104.msg1256255.html#msg1256255) geschilderten Fall.

Vermutlich würde die Verwendung von $3 statt $2 in der abhängigen Zeile schon reichen ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 14 Januar 2023, 12:32:44
geändert und eingecheckt.

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Rampler am 14 Januar 2023, 15:09:12
@Stefan,
bezugnehmend auf #1220 vom OdfFhem habe ich die neue 98_HTTPMOD.pm getestet.

Ich habe jetzt auch noch die Zeile 514

von:   
Log3 $name, 5, "$name: validating attr $name $aName $aVal, check for replacement${2}Mode";

nach:
Log3 $name, 5, "$name: validating attr $name $aName $aVal, check for replacement${3}Mode";

geändert. Jetzt passt alles .., zumindest gibts keine Fehlermeldungen mehr.

Gruß Klaus

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 14 Januar 2023, 15:30:14
Zitat von: StefanStrobel am 14 Januar 2023, 12:32:44
geändert und eingecheckt.

Gruss
   Stefan

Eingecheckt ohne zu testen? Cool...  8)
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fremitus am 24 Januar 2023, 18:23:38
Hallo zusammen,

ich bräuchte mal Hilfe...meine Suche hier im Forum brachte leider immer nur Teilergebnisse, wobei ich definitiv nicht der Erste bin, der danach fragt.

Ich möchte über Tankerkönig die aktuellen Preise abfragen, was auch tadellos funktioniert. Das ganze soll dynamisch erfolgen, sprich im Bulli. Meine installation funktioniert schon für die Blitzer und Wetter Module.

Die GPS Daten liegen als Readings vor (ueber ein Customreading), ich kann diese somit direkt einlesen. Trotz mehrfachen Lesens der commandref zu httpmod komme ich nicht weiter. Ich habe folgendes definiert:
https://creativecommons.tankerkoenig.de/json/list.php?lat=$val&lng=$val&rad=4&sort=price&type=diesel&apikey=xxxxx

Die beiden &val möchte ich über set01Data [gps:koordinaten]=$val& füllen...hier mal der Wert für Latitude. Wobei [gps:koordinaten] die gps Daten liefert.

Wie von mir befürchtet geht die Abfrage ohne die Werte raus.

HandleSendQueue sends update with timeout 2 to https://creativecommons.tankerkoenig.de/json/list.php?lat=&lng=&rad=4&sort=price&type=diesel&apikey=xxxxxxxx, No Data, No Header

Kann ich einfach ein Customreading an dieser Stelle benutzen?

Gruss Peer
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: OdfFhem am 24 Januar 2023, 18:30:09
@fremitus

Angenommen, der apikey ist echt, würde ich diesen anonymisieren ...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fremitus am 24 Januar 2023, 21:55:18
ja Mist ... beim zweiten copy habe das übersehen .... danke!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fremitus am 25 Januar 2023, 02:38:27
wie immer, wenn man schreibt...habe es gefunden und gefixed, da war ich ja erstmal völlig falsch unterwegs.....

Mit replacement klappt es wunderbar:

defmod tanke HTTPMOD https://creativecommons.tankerkoenig.de/json/list.php?lat=%vala%&lng=%valo%&rad=4&sort=price&type=diesel&apikey=xxxxxxx 900
attr tanke extractAllJSON 1
attr tanke replacement01Mode reading
attr tanke replacement01Regex %vala%
attr tanke replacement01Value gps:gpslat
attr tanke replacement02Mode reading
attr tanke replacement02Regex %valo%
attr tanke replacement02Value gps:gpslon


Gruss Peer
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DigiNecro am 04 Februar 2023, 14:10:42
Bei mir stürzt bei einer Abfrage immer ganz FHEM ab. Liegt dies an meiner Konfiguration oder woanders?

Es tritt nur auf, wenn ich dies setze:
get01JSON text


define WitzAPIDE HTTPMOD https://witzapi.de/api/joke/?language=de 0
attr WitzAPIDE extractAllJSON 1
attr WitzAPIDE get01JSON text
attr WitzAPIDE get01Name Zufallswitz
attr WitzAPIDE getDecode UTF-8
attr WitzAPIDE getHeader1 Content-Type: application/json
attr WitzAPIDE getHeader2 Accept: */*
attr WitzAPIDE room Sprachsteuerung,hidden
attr WitzAPIDE showBody 1
attr WitzAPIDE stateFormat 01_text
#   DEF        https://witzapi.de/api/joke/?language=de 0
#   FUUID      63d060ba-f33f-70c1-a063-92d4966aaaa1d61a
#   Interval   0
#   MainURL    https://witzapi.de/api/joke/?language=de
#   ModuleVersion 4.1.15 - 17.12.2022
#   NAME       WitzAPIDE
#   NOTIFYDEV  global
#   NR         1127
#   NTFY_ORDER 50-WitzAPIDE
#   STATE      Ich habe beim Metzger angerufen, aber da ging kein Schwein dran.
#   TYPE       HTTPMOD
#   READINGS:
#     2023-02-04 13:50:17   01_language     de
#     2023-02-04 13:50:17   01_text         Ich habe beim Metzger angerufen, aber da ging kein Schwein dran.
#
setstate WitzAPIDE Ich habe beim Metzger angerufen, aber da ging kein Schwein dran.
setstate WitzAPIDE 2023-02-04 13:50:17 01_language de
setstate WitzAPIDE 2023-02-04 13:50:17 01_text Ich habe beim Metzger angerufen, aber da ging kein Schwein dran.


Aus dem Log (Verbose 5):

2023.02.04 14:05:07 5: WitzAPIDE: get called with Zufallswitz
2023.02.04 14:05:07 5: WitzAPIDE: get found option Zufallswitz in attribute get01Name
2023.02.04 14:05:07 4: WitzAPIDE: get will now request Zufallswitz, no optional value
2023.02.04 14:05:07 5: WitzAPIDE: AddToQueue adds type get01 to URL https://witzapi.de/api/joke/?language=de, no data, header Content-Type: application/json
Accept: */*, retry 0, initial queue len: 0
2023.02.04 14:05:07 5: WitzAPIDE: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.02.04 14:05:07 4: WitzAPIDE: HandleSendQueue sends get01 with timeout 2 to https://witzapi.de/api/joke/?language=de, No Data,
header: Content-Type: application/json
Accept: */*
2023.02.04 14:05:07 5: WitzAPIDE: ReadCallback called from __ANON__
2023.02.04 14:05:07 4: WitzAPIDE: Read callback: request type was get01 retry 0,
header: HTTP/1.1 200 OK
Server: nginx
Date: Sat, 04 Feb 2023 13:05:07 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 137
Connection: close
X-Powered-By: Express
Cache-Control: public, max-age=0
Access-Control-Allow-Origin: *
ETag: W/"89-T5muCITTt+Fx9QLg27D7tqJG7T0"
Strict-Transport-Security: max-age=15768000, body length 137
2023.02.04 14:05:07 5: WitzAPIDE: Read callback: body
[{"text":"Neben mir wohnt eine indische Familie. Mir ist gerade erst aufgefallen, dass ihr WLAN ,,Indernet" heißt.","language":"de"}]
2023.02.04 14:05:07 4: WitzAPIDE: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2023.02.04 14:05:07 4: WitzAPIDE: extracted JSON values to internal
2023.02.04 14:05:07 5: WitzAPIDE: GetCookies is looking for Cookies
2023.02.04 14:05:07 5: WitzAPIDE: ExtractSid called, context get, num 01
2023.02.04 14:05:07 4: WitzAPIDE: checking for redirects, code=200, ignore=0
2023.02.04 14:05:07 4: WitzAPIDE: no redirects to handle
2023.02.04 14:05:07 5: WitzAPIDE: Read callback sets LAST_REQUEST to get01
2023.02.04 14:05:07 5: WitzAPIDE: CheckAuth decided no authentication required
2023.02.04 14:05:07 5: WitzAPIDE: ExtractReading Zufallswitz with json text ...
2023.02.04 14:05:07 5: WitzAPIDE: ExtractReading Zufallswitz with json text did not match a key directly - trying regex match to create a list
2023.02.04 14:05:07 5: WitzAPIDE: ExtractReading Zufallswitz with json /^text/ got keylist
2023.02.04 14:05:07 5: WitzAPIDE: ExtractReading Zufallswitz did not match
Wide character at ./FHEM/98_HTTPMOD.pm line 1501.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 06 Februar 2023, 09:40:48
Zitat von: DigiNecro am 04 Februar 2023, 14:10:42
Bei mir stürzt bei einer Abfrage immer ganz FHEM ab. Liegt dies an meiner Konfiguration oder woanders?

Es tritt nur auf, wenn ich dies setze:
get01JSON text

2023.02.04 14:05:07 5: WitzAPIDE: Read callback: body
[{"text":"Neben mir wohnt eine indische Familie. Mir ist gerade erst aufgefallen, dass ihr WLAN ,,Indernet" heißt.","language":"de"}]

Moin,
eventuell liegt es an der JSON Antwort, da sind innerhalb des Textes noch zusätzliche "" vorhanden. Somit könnte das Textfeld nicht richtig erkannt werden.

VG  Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DigiNecro am 08 Februar 2023, 13:49:24
Ich schau es mir mal an
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 15 Februar 2023, 16:10:38
Dass das ganze Fhem abstürzt sollte nicht passieren. Das schaue ich mir nochmal genauer an.
Kannst Du mir die HTTP-Response mal als File zum Testen posten?

Gruss
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 18 Februar 2023, 20:38:43
Hallo zusammen,

ich bräuchte mal Hilfe und wäre für einen Tipp dankbar...

Ich habe bisher immer erfolgreich den Status meines Wechselrichters mittels POST-Request ausgelesen.

Nun klappt das nicht mehr, ich bekomme folgende Fehlermeldungen (verbose 5):
2023.02.18 20:02:18 5: PM_Test: ReadCallback called from __ANON__
2023.02.18 20:02:18 5: PM_Test: Read callback Error LogLvl set to 3, regex
2023.02.18 20:02:18 3: PM_Test: Read callback: Error:  SSL connect attempt failed error:14094410:lib(20):func(148):reason(1040)
2023.02.18 20:02:18 4: PM_Test: Read callback: request type was update retry 0, no headers, no body
2023.02.18 20:02:18 5: PM_Test: Read callback: body empty
2023.02.18 20:02:18 4: PM_Test: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.02.18 20:02:18 5: PM_Test: GetCookies is looking for Cookies
2023.02.18 20:02:18 5: PM_Test: ExtractSid called, context reading, num unknown
2023.02.18 20:02:18 4: PM_Test: no header to look for redirects
2023.02.18 20:02:18 5: PM_Test: Read callback sets LAST_REQUEST to update
2023.02.18 20:02:18 5: PM_Test: CheckAuth decided no authentication required


Wenn ich den exakt gleichen Request (Content + Header) über ein Webportal (z.B. https://reqbin.com/) absetze, klappt der Zugriff weiterhin anstandslos.
Installiert ist openssl 1.1.1l, daran sollte es also nicht liegen.

Hat jemand eine Idee was da schief läuft?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Wolle02 am 19 Februar 2023, 07:42:48
Spontan würde ich sagen

Zitat2023.02.18 20:02:18 5: PM_Test: Read callback: body empty
2023.02.18 20:02:18 4: PM_Test: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)

Schau doch mal mit welchem Charset die Antwort über das Webportal kommt und wähle dann im Attribut 'bodyDecode' das entsprechende Charset; oder versuch mal die Option 'auto'.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 Februar 2023, 08:09:57
So wie das für mich aussieht, kommt gar keine Antwort, weil irgendwas mit HTTPS nicht klappt:


2023.02.18 20:02:18 5: PM_Test: Read callback Error LogLvl set to 3, regex
2023.02.18 20:02:18 3: PM_Test: Read callback: Error:  SSL connect attempt failed error:14094410:lib(20):func(148):reason(1040)
2023.02.18 20:02:18 4: PM_Test: Read callback: request type was update retry 0, no headers, no body


sind die Zertifikate ok?

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 19 Februar 2023, 14:00:44
Danke für die schnelle Antwort...da erwischst du mich jetzt auf dem falschen Fuß ???
Das Zertifikat der Gegenseite (Wechselrichter), oder das bei mir? Wie prüfe ich das?
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 19 Februar 2023, 14:10:53
Den ganzen Thread mit > 80 Seiten habe ich jetzt nicht durchforstet, deshalb entschuldigt bitte, falls das schonmal diskutiert wurde.

1. Frage: welchen Sinn hat die Ausgabe des featurelevel am Ende einer define Meldung?

2023.02.19 13:59:10 3: pegel: Defined with URL https://... and interval 900 featurelevel 6.2

2. Frage: gehört diese Meldung nicht eigentlich in den Loglevel 4? Wenn jedes Modul ein "Define" im Loglevel 3 bestätigen würde, dann gute Nacht...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 19 Februar 2023, 14:26:57
Ergänzung:
Das Zertifikat der Gegenstelle ist lt. Anzeige in meinem Browser bis 10.April gültig.
Ich frage zudem noch eine andere (Wetter)-Webside ab, die ebenfalls über https läuft, das funktioniert anstandslos.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 21 Februar 2023, 21:41:06
Ich habe das Beispiel mal aufs Nötigste reduziert.
Folgender Zugriff klappt, d.h. im TestReading steht (irgend)eine Response drin.
defmod PM_Test HTTPMOD https://www.wetter.de/ 0
attr PM_Test reading1Name TestReading
attr PM_Test reading1Regex ([\d\D]+)
set PM_Test reread

Ersetze ich hingegen www.wetter.de durch www.soliscloud.com kommt nichts zurück.
Die Ursache zu verstehen wäre natürlich toll...aber viell. ist jemand so nett und könnte das (mit soliscloud) mal kurz nachstellen und schauen, ob das Verhalten gleich ist, bitte?
Wäre ein Hinweis auf "Problem liegt bei Webside" oder auf "Problem liegt bei mir"...
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 22 Februar 2023, 08:17:43

2023.02.22 08:14:29 3: PM_Test: interval is 0, no periodic updates will done.
2023.02.22 08:14:29 3: PM_Test: Read callback: Error: https://www.soliscloud.com: malformed or unsupported URL

2023.02.22 08:15:18 5: PM_Test: set called with reread
2023.02.22 08:15:18 4: PM_Test: GetUpdate called (reread)
2023.02.22 08:15:18 5: PM_Test: AddToQueue adds type update to URL https://www.soliscloud.com, no data, no headers, retry 0, initial queue len: 0
2023.02.22 08:15:18 5: PM_Test: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.02.22 08:15:18 4: PM_Test: HandleSendQueue sends update with timeout 2 to https://www.soliscloud.com, No Data, No Header
2023.02.22 08:15:18 5: PM_Test: ReadCallback called from HttpUtils_NonblockingGet
2023.02.22 08:15:18 5: PM_Test: Read callback Error LogLvl set to 3, regex
2023.02.22 08:15:18 3: PM_Test: Read callback: Error: https://www.soliscloud.com: malformed or unsupported URL
2023.02.22 08:15:18 4: PM_Test: Read callback: request type was update retry 0, no headers, no body
2023.02.22 08:15:18 5: PM_Test: Read callback: body empty
2023.02.22 08:15:18 4: PM_Test: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.02.22 08:15:18 5: PM_Test: GetCookies is looking for Cookies
2023.02.22 08:15:18 5: PM_Test: ExtractSid called, context reading, num unknown
2023.02.22 08:15:18 4: PM_Test: no header to look for redirects
2023.02.22 08:15:18 5: PM_Test: Read callback sets LAST_REQUEST to update
2023.02.22 08:15:18 5: PM_Test: CheckAuth decided no authentication required


Die Webseite ist einfach zu langsam mit ihrer Antwort.


attr PM_Test timeout 7


sollte helfen. Zumindest kam bei mir dann eine Antwort und es wurde das TestReading mit Inhalt gefüllt.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DigiNecro am 22 Februar 2023, 10:16:30
Zitat von: StefanStrobel am 15 Februar 2023, 16:10:38
Dass das ganze Fhem abstürzt sollte nicht passieren. Das schaue ich mir nochmal genauer an.
Kannst Du mir die HTTP-Response mal als File zum Testen posten?

Gruss
   Stefan

Sorry, ich bin gerade bissl eingespannt. Ich werd aber mal was zusammenstellen. Danke für das Angebot!
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 22 Februar 2023, 14:05:16
Zitat von: DigiNecro am 22 Februar 2023, 10:16:30
Sorry, ich bin gerade bissl eingespannt. Ich werd aber mal was zusammenstellen. Danke für das Angebot!

Warum für alles immer HTTPMOD, insbesondere wenn das Ergebnis JSON ist?
Das werde ich in diesem Leben wohl nicht mehr verstehen.


defmod witzapi JsonMod https://witzapi.de/api/joke/?language=de
attr witzapi readingList complete()


Funktioniert einwandfrei, auch mit den indischen Nachbarn - siehe Screenshot.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 22 Februar 2023, 20:05:09
Zitat von: betateilchen am 22 Februar 2023, 08:17:43
Die Webseite ist einfach zu langsam mit ihrer Antwort.

attr PM_Test timeout 7

sollte helfen. Zumindest kam bei mir dann eine Antwort und es wurde das TestReading mit Inhalt gefüllt.
Hi betateilchen,
vielen Dank fürs Nachstellen!
Auch mit Timeout(=20) bekomme ich leider keinen Inhalt im Reading, sondern weiterhin diese Fehlermeldung
2023.02.22 19:56:36 5: PM_Test: ReadCallback called from __ANON__
2023.02.22 19:56:36 5: PM_Test: Read callback Error LogLvl set to 3, regex
2023.02.22 19:56:36 3: PM_Test: Read callback: Error:  SSL connect attempt failed error:14094410:lib(20):func(148):reason(1040)
2023.02.22 19:56:36 4: PM_Test: Read callback: request type was update retry 0, no headers, no body
2023.02.22 19:56:36 5: PM_Test: Read callback: body empty
2023.02.22 19:56:36 4: PM_Test: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.02.22 19:56:36 5: PM_Test: GetCookies is looking for Cookies
2023.02.22 19:56:36 5: PM_Test: ExtractSid called, context reading, num unknown
2023.02.22 19:56:36 4: PM_Test: no header to look for redirects
2023.02.22 19:56:36 5: PM_Test: Read callback sets LAST_REQUEST to update
2023.02.22 19:56:36 5: PM_Test: CheckAuth decided no authentication required


Nun habe ich zumindest die Bestätigung, dass es wohl nicht an der Webside liegt...wie ich die Ursache nun finde, weiß ich leider nicht. Mit dem o.g. Fehlercode komme ich mit googlen auch auf keinen grünen Zweig :(
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 22 Februar 2023, 20:49:06
Du solltest zuerst versuchen herauszufinden, woher das hier kommt:

2023.02.22 19:56:36 5: PM_Test: ReadCallback called from __ANON__

Das __ANON__ irritiert mich einigermaßen.

Poste doch mal ein komplettes raw list von Deinem device.
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: timtom2000 am 23 Februar 2023, 00:56:10
Das __ANON__ kommt in diversen Modulen meiner Perl-Installation vor, dort ist das im Quellcode hinterlegt.
Hatte ich bisher noch nicht hinterfragt. Kommt auch bei Abfrage der Wetter-Seite, insofern scheint das nicht zu stören.

Hier mal das Device-Listing
Internals:
   BUSY       0
   CFGFN     
   DEF        https://www.soliscloud.com/ 0
   FUUID      63f6aaa8-f33f-6d30-56cd-90f331849196ed38
   Interval   0
   MainURL    https://www.soliscloud.com/
   ModuleVersion 4.1.15 - 17.12.2022
   NAME       PM_Test
   NOTIFYDEV  global
   NR         747
   NTFY_ORDER 50-PM_Test
   STATE      ???
   TYPE       HTTPMOD
   eventCount 1
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://www.soliscloud.com:443
     auth       0
     data       
     displayurl https://www.soliscloud.com/
     header     
     host       www.soliscloud.com
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /
     protocol   https
     redirects  0
     timeout    2
     url        https://www.soliscloud.com/
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        https://www.soliscloud.com/
Attributes:
   reading1Name TestReading
   reading1Regex ([\d\D]+)


Ich bin mit den FHEM-Modulen aus dem Backup mal ein paar Monate zurückgegangen (weil es ja damals funktioniert hatte).
Funktioniert zwar immer noch nicht, aber es kommt eine zusätzl. Fehlermeldung von Httputils, der Fehler wird also bereits dort detektiert.
2023.02.23 00:30:55 4: HttpUtils: https://www.soliscloud.com/: Can't connect(2) to https://www.soliscloud.com:443:  SSL connect attempt failed error:14094410:lib(20):func(148):reason(1040)
2023.02.23 00:30:55 5: PM_Test: ReadCallback called from __ANON__
2023.02.23 00:30:55 5: PM_Test: Read callback Error LogLvl set to 3, regex
2023.02.23 00:30:55 3: PM_Test: Read callback: Error: https://www.soliscloud.com/: Can't connect(2) to https://www.soliscloud.com:443:  SSL connect attempt failed error:14094410:lib(20):func(148):reason(1040)
2023.02.23 00:30:55 4: PM_Test: Read callback: request type was update retry 0, no headers, no body
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 26 Februar 2023, 13:59:45
Zitat von: betateilchen am 19 Februar 2023, 14:10:53
1. Frage: welchen Sinn hat die Ausgabe des featurelevel am Ende einer define Meldung?

2023.02.19 13:59:10 3: pegel: Defined with URL https://... and interval 900 featurelevel 6.2

2. Frage: gehört diese Meldung nicht eigentlich in den Loglevel 4? Wenn jedes Modul ein "Define" im Loglevel 3 bestätigen würde, dann gute Nacht...

zu 1.: Ich hatte das eingebaut als sich Defaults von HTTPMOD mal mit einem Featurelevel geändert haben.
zu 2.: das habe ich vor 10 Jahren mal so gemacht und seither hat sich keiner beschwert. Ich werde das bei nächster Gelegenheit auf Level 4 ändern.

Gruß
    Stefan
Titel: Problem mit replacementXXmode, dynamsiche URL, reading
Beitrag von: twinFHEM am 26 Februar 2023, 15:48:14
Hallo zusammen,

mit replacementXXMode möchte ich verschiedene Parameter an eine URL hängen. Nehme ich den Mode text und als replacementXXValue einen statischen Inhalt wie z.b. year=2022 funktioniert es.
Auch bei dem Attribut get02Replacement01Value funktioniert es tadellos. Verwende ich den Mode reading, um Inhalt aus dem Reading Parameter auszulesen, funktioniert es partout nicht!
Ich habe auch außerhalb dieses Forums nach einer Doku, Info gesucht, bin aber leider nicht fündig geworden.

Im FHEM-Wiki steht:
ZitatIf the replacement[0-9]*Mode is reading, then the corresponding replacement[0-9]*Value is interpreted as the name of a reading of the same device or as device:reading to refer to another device.
Meine diesbezüglichen Versuche mit Name des Readings, in Klammern, ohne Klammern, mit und ohne Doppelpunkt und Device schlugen leider fehl!

Mit text sieht meine URL korrekterweise so aus:
https://XXX@backend.powerfox.energy/api/2.0/my/XXX/report?year=2022

Mit reading so:
https://XXX@backend.powerfox.energy/api/2.0/my/XXX/report?Parameter

Was mache ich falsch?
Ich würde mich wahnsinnig über ein paar Tipps von euch freuen.

Hier meine Device:
defmod powerfox_report_dyn HTTPMOD none 0
attr powerfox_report_dyn extractAllJSON 0
attr powerfox_report_dyn get01Name Jahr
attr powerfox_report_dyn get02Name Monat
attr powerfox_report_dyn get02Replacement01Value Parameter
attr powerfox_report_dyn get03Name Tag
attr powerfox_report_dyn getURL https://XXX@backend.powerfox.energy/api/2.0/my/XXX/report?%%VARS%%
attr powerfox_report_dyn reading01JSON Consumption_Sum
attr powerfox_report_dyn reading01Name Consumption_Sum
attr powerfox_report_dyn replacement01Mode text
attr powerfox_report_dyn replacement01Regex %%VARS%%
attr powerfox_report_dyn replacement01Value year=2022
attr powerfox_report_dyn replacement02Mode reading
attr powerfox_report_dyn userReadings Parameter { "year=" . ReadingsVal("powerfox_report_dyn","yearApp",0) . "&month=" . ReadingsVal("powerfox_report_dyn","monthApp",0)}

setstate powerfox_report_dyn 2023-02-26 15:28:52 Consumption_Sum 21.5980000000012
setstate powerfox_report_dyn 2023-02-26 15:28:52 Parameter year=2023&month=02
setstate powerfox_report_dyn 2023-02-25 16:17:56 dayApp 15
setstate powerfox_report_dyn 2023-02-25 16:26:06 monthApp 02
setstate powerfox_report_dyn 2023-02-25 19:12:41 yearApp 2023

Titel: Antw:Problem mit replacementXXmode, dynamsiche URL, reading
Beitrag von: fremitus am 26 Februar 2023, 16:11:47

Mit text sieht meine URL korrekterweise so aus:
https://XXX@backend.powerfox.energy/api/2.0/my/XXX/report?year=2022

ich habe es wie folgt gelöst (siehe meinen eigenen Eintrag ein paar Seiten vorher):
https://forum.fhem.de/index.php/topic,45176.msg1259940.html#msg1259940

Gruss

Peer
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 26 Februar 2023, 22:37:34
Hallo twinFhem,

kann es sein dass Du mit der Nummerierung der Replacements durcheinander gekommen bist?
Für Replacement01 hast Du Value auf Parameter gesetzt, aber den Mode auf text.
Dafür hast Du bei Replacement02 den Mode auf reading gesetzt, aber Replacement02 hat weder eine Regex noch eine Value ...

Gruß
   Stefan
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: twinFHEM am 27 Februar 2023, 10:13:49
Hallo Stefan, hallo Peer,
besten Dank für eure Antworten!

Ich habe eine Testdevice in Form von Peers Eintrag erstellt. Lief natürlich!
Dann auf Fehlersuche gegangen, einige Dinge angepasst. Lief natürlich nicht!
Bis ich dann replacement01Mode auch auf reading gesetzt habe. Noch einen 2. dynamischen Parameter eingerichtet und Donnerschlach!
Es lief! :D

Stefan wird recht haben und ich würde gerne verstehen warum. Von daher wäre ich für eine kurze Erklärung dankbar.
Ich gehe davon aus, dass mit z.B. replacement01Mode, also mit 01, 02, 02, etc. das Ganze in voneinander unabhängige "Blöcke" unterteilt wird.


attr powerfox_report_dyn get01Name Jahr
attr powerfox_report_dyn replacement01Mode text
attr powerfox_report_dyn replacement01Regex %%VARS%%
attr powerfox_report_dyn replacement01Value year=2022


Für "Block 02" habe ich get02Replacement01Value mit der Idee verwendet, dass der Wert von replacement01Value (hier durch powerfox_report_dyn:Parameter) ersetzt wird und damit replacement02Value entfällt. Tatsächlich funktioniert dies auch ohne ein replacement02Regex.

Welche Erklärung gibt es dafür?
Was genau macht get02Replacement01Value und wo liegt der Unterschied zu replacement02Value?

Auf jeden Fall bin ich erstmal megahappy, dass es funktioniert und ich weiterkomme.

Hier mein aktuelle Device:

defmod powerfox_report_dyn HTTPMOD none 0
attr powerfox_report_dyn extractAllJSON 0
attr powerfox_report_dyn get01Name Jahr
attr powerfox_report_dyn get02Name Monat
attr powerfox_report_dyn get02Replacement01Value powerfox_report_dyn:Parameter
attr powerfox_report_dyn get03Name Tag
attr powerfox_report_dyn getURL https://XXX@backend.powerfox.energy/api/2.0/my/XXX/report?%vars%
attr powerfox_report_dyn reading01JSON Consumption_Sum
attr powerfox_report_dyn reading01Name Consumption_Sum
attr powerfox_report_dyn replacement01Mode reading
attr powerfox_report_dyn replacement01Regex %vars%
attr powerfox_report_dyn replacement01Value powerfox_report_dyn:Parameter1
attr powerfox_report_dyn replacement02Mode reading
attr powerfox_report_dyn userReadings Parameter { "year=" . ReadingsVal("powerfox_report_dyn","yearApp",0) . "&month=" . ReadingsVal("powerfox_report_dyn","monthApp",0)}, Parameter1 { "year=" . ReadingsVal("powerfox_report_dyn","yearApp",0)}


Nochmals vielen Dank für euer Zutun & viele Grüße,
Hendrik
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 27 Februar 2023, 19:03:15
Hallo Hendrik,

eine Ersetzung sollte aus je einer Regex, einem Mode und einer Value bestehen. Damit man mehrere Ersetzungen machen kann, werden die Ersetzungen mit Nummern getrennt: replacement01, replacement02 etc.

Beispiel:
Replacement01: %%year%% soll mit dem Wert des Readings yearApp ersetzt werden.
Replacement02 %%month%% soll mit dem Wert des Readings monthApp ersetzt werden.

Mit den Nummern von get oder set-Befehlen haben die Nummern der Ersetzungen zunächst nichts zu tun.
get01... ist der erste get, get02... der zweite... völlig unabhängig on Replacements.

Nur wenn man den zu ersetzenden Wert eines Replacements von get01 zu get02 variieren möchte, dann kann man mit get02Replacement01Value den Wert der ersten Ersetzung nur für das zweite get ändern.

In Deinem Fall gibt es kein vollständig definiertes Replacement02, nur einen dafür gesetzten Mode. Den kannst Du somit auch weglassen, da er nicht verwendet wird und nur Verwirrung stiftet.

Gruss
    Stefan

Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 15 März 2023, 18:13:10
Hallo zusammen,
ich lese etwas JSON ein und habe da noch eine Frage.

Im httpbody wird "cost":null oder "consumption":null zurück gegeben.

httpbody
{"data":{"viewer":{"home":{"consumption":{"nodes":[{"from":"2023-03-15T16:00:00.000+01:00","to":"2023-03-15T17:00:00.000+01:00","cost":null,"unitPrice":1.5486375,"unitPriceVAT":0.3097275,"consumption":null,"consumptionUnit":"kWh"}]}}}}}



attr EVU_Tibber reading0301JSON data_viewer_homes_consumption_nodes_01_to
attr EVU_Tibber reading0301Name nodes_to
attr EVU_Tibber reading0302JSON data_viewer_home_consumption_nodes_01_cost
attr EVU_Tibber reading0302Name nodes_cost
attr EVU_Tibber reading0303JSON data_viewer_home_consumption_nodes_01_unitPrice
attr EVU_Tibber reading0303Name nodes_unitPrice
attr EVU_Tibber reading0304JSON data_viewer_home_consumption_nodes_01_consumption
attr EVU_Tibber reading0304Name nodes_consumption


Jedoch werden für die "null" Werte dann keine readings geschrieben
Und auch das Feld "consumption" wird mit "consumptionUnit" geschrieben
Auch das Datum "to" fehlt komplett

nodes_consumption kWh
nodes_unitPrice 1.5486375


Könnte mir da bitte mal jemand helfen?

EDIT: 20230318 Ich habe es nun mit Regex parsen können, wäre aber auch über eine elegantere Lösung erfreut ;-)

attr EVU_Tibber get03-1Name nodes_from
attr EVU_Tibber get03-2Name nodes_to_date
attr EVU_Tibber get03-3Name nodes_to_hour
attr EVU_Tibber get03-4Name nodes_to_timezone
attr EVU_Tibber get03-5Name nodes_cost
attr EVU_Tibber get03-5OMap null:0
attr EVU_Tibber get03-6Name nodes_unitPrice
attr EVU_Tibber get03-7Name nodes_unitPriceVAT
attr EVU_Tibber get03-8Name nodes_consumption
attr EVU_Tibber get03-8OMap null:0
attr EVU_Tibber get03-9Name nodes_consumptionUnit
attr EVU_Tibber get03Data { "query": "{viewer {home(id:\"%%homeID%%\") {consumption(resolution: HOURLY, last: 1) {nodes {from to cost unitPrice unitPriceVAT consumption consumptionUnit}}}}}"}
attr EVU_Tibber get03Header01 Content-Type: application/json
attr EVU_Tibber get03Header02 Authorization: Bearer %%token%%
attr EVU_Tibber get03Name 03_consumption_hour
attr EVU_Tibber get03Regex \{"data":\{"viewer":\{"home":\{"consumption":\{"nodes":\[\{"from":"(.*)","to":"([\d+-]+)T(\d\d):00:00\.000([-+\d]+).*","cost":(.*),"unitPrice":(.*),"unitPriceVAT":(.*),"consumption":(.*),"consumptionUnit":"(.*)"
attr EVU_Tibber get03URL https://api.tibber.com/v1-beta/gql


EDIT: 20230315 Das Problem mit "consumption" habe ich mit mit dem $ Zeichen lösen können.

neue Testdaten
httpbody
{"data":{"viewer":{"home":{"consumption":{"nodes":[{"from":"2023-03-15T16:00:00.000+01:00","to":"2023-03-15T17:00:00.000+01:00","cost":1.85217045,"unitPrice":1.5486375,"unitPriceVAT":0.3097275,"consumption":1.196,"consumptionUnit":"kWh"}]}}}}}

Beim Attribut das $ anhängen
attr EVU_Tibber reading0304JSON data_viewer_home_consumption_nodes_01_consumption$
attr EVU_Tibber reading0304Name nodes_consumption

ergibt nun

nodes_consumption 1.196


Hier noch das Log

Erster Test mit ExpandAllJSON
httpbody
2023.03.15 17:30:57.258 5: EVU_Tibber: Read callback: body
{"data":{"viewer":{"home":{"consumption":{"nodes":[{"from":"2023-03-15T16:00:00.000+01:00","to":"2023-03-15T17:00:00.000+01:00","cost":null,"unitPrice":1.5486375,"unitPriceVAT":0.3097275,"consumption":null,"consumptionUnit":"kWh"}]}}}}}

2023.03.15 17:30:57.258 4: EVU_Tibber: BodyDecode is not decoding the response body (charset utf-8, bodyDecode defaults to none)
2023.03.15 17:30:57.259 4: EVU_Tibber: extracted JSON values to internal
2023.03.15 17:30:57.259 5: EVU_Tibber: GetCookies is looking for Cookies
2023.03.15 17:30:57.259 5: EVU_Tibber: ExtractSid called, context get, num 03
2023.03.15 17:30:57.260 4: EVU_Tibber: checking for redirects, code=200, ignore=0
2023.03.15 17:30:57.260 4: EVU_Tibber: no redirects to handle
2023.03.15 17:30:57.260 5: EVU_Tibber: Read callback sets LAST_REQUEST to get03
2023.03.15 17:30:57.260 5: EVU_Tibber: CheckAuth decided no authentication required
2023.03.15 17:30:57.260 5: EVU_Tibber: ExtractReading for context get, num 03 - no individual parse definition

Bei dem automatischen Entpacken fehlte auch schon das Feld "consumption"
jedoch wurde hier das Datum gelesen.

2023.03.15 17:30:57.261 5: EVU_Tibber: Read sets reading data_viewer_home_consumption_nodes_01_unitPrice to value 1.5486375 of JSON data_viewer_home_consumption_nodes_01_unitPrice
2023.03.15 17:30:57.261 5: EVU_Tibber: Read sets reading data_viewer_home_consumption_nodes_01_consumptionUnit to value kWh of JSON data_viewer_home_consumption_nodes_01_consumptionUnit
2023.03.15 17:30:57.261 5: EVU_Tibber: Read sets reading data_viewer_home_consumption_nodes_01_to to value 2023-03-15T17:00:00.000+01:00 of JSON data_viewer_home_consumption_nodes_01_to
2023.03.15 17:30:57.262 5: EVU_Tibber: Read sets reading data_viewer_home_consumption_nodes_01_from to value 2023-03-15T16:00:00.000+01:00 of JSON data_viewer_home_consumption_nodes_01_from
2023.03.15 17:30:57.262 5: EVU_Tibber: Read sets reading data_viewer_home_consumption_nodes_01_unitPriceVAT to value 0.3097275 of JSON data_viewer_home_consumption_nodes_01_unitPriceVAT



Zweiter Test
httpbody
{"data":{"viewer":{"home":{"consumption":{"nodes":[{"from":"2023-03-15T16:00:00.000+01:00","to":"2023-03-15T17:00:00.000+01:00","cost":1.85217045,"unitPrice":1.5486375,"unitPriceVAT":0.3097275,"consumption":1.196,"consumptionUnit":"kWh"}]}}}}}

2023.03.15 17:49:49.589 5: EVU_Tibber: ExtractReading nodes_to with json data_viewer_homes_consumption_nodes_01_to ...
2023.03.15 17:49:49.589 5: EVU_Tibber: ExtractReading nodes_to with json data_viewer_homes_consumption_nodes_01_to did not match a key directly - trying regex match to create a list
2023.03.15 17:49:49.589 5: EVU_Tibber: ExtractReading nodes_to with json /^data_viewer_homes_consumption_nodes_01_to/ got keylist
2023.03.15 17:49:49.589 5: EVU_Tibber: ExtractReading nodes_to did not match
2023.03.15 17:49:49.589 5: EVU_Tibber: ExtractReading nodes_cost with json data_viewer_home_consumption_nodes_01_cost ...
2023.03.15 17:49:49.590 5: EVU_Tibber: ExtractReading for reading0302-1 sets nodes_cost to 1.85217045
2023.03.15 17:49:49.590 5: EVU_Tibber: ExtractReading value as hex is 312e3835323137303435
2023.03.15 17:49:49.590 5: EVU_Tibber: ExtractReading nodes_unitPrice with json data_viewer_home_consumption_nodes_01_unitPrice ...
2023.03.15 17:49:49.590 5: EVU_Tibber: ExtractReading for reading0303-1 sets nodes_unitPrice to 1.5486375
2023.03.15 17:49:49.591 5: EVU_Tibber: ExtractReading value as hex is 312e35343836333735
2023.03.15 17:49:49.591 5: EVU_Tibber: ExtractReading nodes_consumption with json data_viewer_home_consumption_nodes_01_consumption$ ...
2023.03.15 17:49:49.591 5: EVU_Tibber: ExtractReading nodes_consumption with json data_viewer_home_consumption_nodes_01_consumption$ did not match a key directly - trying regex match to create a list
2023.03.15 17:49:49.591 5: EVU_Tibber: ExtractReading nodes_consumption with json /^data_viewer_home_consumption_nodes_01_consumption$/ got keylist data_viewer_home_consumption_nodes_01_consumption
2023.03.15 17:49:49.592 5: EVU_Tibber: ExtractReading for reading0304-1 sets nodes_consumption to 1.196
2023.03.15 17:49:49.592 5: EVU_Tibber: ExtractReading value as hex is 312e313936


VG  Christian
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Onkel.Tom am 18 März 2023, 11:24:38

Hallo zusammen,

ich möchte die Daten aus der Webseite meines ASEKO Pool-Controllers "Pool live" (https://pool.aseko.com/sign-in) auslesen.

Dabei müsste ich zunächst die Login-/Passwortseite passieren,
auf der neben Benutzername und Passwort (beides vorhanden) auch die terms zu bestätigen sind.

Da ich leider blutiger Anfänger bei Thema Webdesign bin, geling mir dies trotz Einlesen in die Thematik HTTPMOD nicht.

Bin für jede Hifestellung sehr dankbar. 

VG
Onkel Tom
Titel: Antw:Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 18 März 2023, 12:34:35
Zitat von: Onkel.Tom am 18 März 2023, 11:24:38
ich möchte die Daten aus der Webseite meines ASEKO Pool-Controllers "Pool live" (https://pool.aseko.com/sign-in) auslesen.

Dabei müsste ich zunächst die Login-/Passwortseite passieren,
auf der neben Benutzername und Passwort (beides vorhanden) auch die terms zu bestätigen sind.
Hallo Tom,
Du müsstest Deinen Login mit tracen und dann schauen, was auf der http Ebene an Daten ausgetauscht wird.

VG  Christian
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 März 2023, 13:52:42
Hallo Christian,

null-Werte in JSON-Antworten sind bisher ausgefiltert worden. Eine neue Version, bei der das nicht mehr so ist kommt. Vermutlich komme ich am Wochenende dazu.

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Onkel.Tom am 20 März 2023, 20:23:06
Zitat von: ch.eick am 18 März 2023, 12:34:35Hallo Tom,
Du müsstest Deinen Login mit tracen und dann schauen, was auf der http Ebene an Daten ausgetauscht wird.
  • Burpsuite
  • Firefox Browser | Anwendungsmenü | Weitere Werkzeuge | Werkzeuge für Web Entwickler
  • Viel Geduld :-)

VG  Christian

Hallo Christian,

ich habe die Spur anhand Deiner Schlagworte aufgenommen.
Vielen Dank erstmal für die schnelle Antwort !

VG
Onkel Tom
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 März 2023, 12:17:15
Hallo Christian,

könntest Du mal die angehängte Änderung testen?
Das File gehört in lib/FHEM/HTTPMOD/

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Onkel.Tom am 23 März 2023, 08:24:11

Hallo,

Dank der Hilfe konnte ich mittlerweile das Login hinbekommen.
In der verbose 5-log sehe ich die gewünschten Daten im Body der http-response.

Diese Daten in ein reading zu schreiben, gelingt mir aber weder mit readingxRegex noch readingxJSON.

Anbei meine aktuellen Attribute, log-auszug und burp-response:



Bin für jeden Hinweis dankbar !

Grüße
Onkel Tom
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 31 März 2023, 18:18:59
Hallo,

offenbar enthält de Response Zeichen, an denen sich die JSON-Library verschluckt.
füge doch mal ein bodyEncode utf8 ein. Dann solltest Du mit extractAllJSON alle Werte sehen.

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Onkel.Tom am 01 April 2023, 20:45:13
Zitat von: StefanStrobel am 31 März 2023, 18:18:59Hallo,

offenbar enthält de Response Zeichen, an denen sich die JSON-Library verschluckt.
füge doch mal ein
bodyEncode utf8 ein. Dann solltest Du mit
extractAllJSON alle Werte sehen.

Gruss
  Stefan

Hallo Stefan,

Danke für die Tipps. Habe es jetzt hinbekommen.

Falls noch jemand seine Aseko-Dosiereinheit einbinden möchte, hier meine Konfiguration:

define PoolController HTTPMOD https://pool.aseko.com/sign-in 300
setuuid PoolController 6419f085-f33f-2bca-0b49-b62ad56f3962901d
attr PoolController alias Pool Controller
attr PoolController enableCookies 1
attr PoolController extractAllJSON 1
attr PoolController get01Name Gerät
attr PoolController get01Poll 1
attr PoolController get01URL https://pool.aseko.com/api/units
attr PoolController get02Name Wasserwerte
attr PoolController get02Poll 1
attr PoolController get02URL https://pool.aseko.com/api/units/1101xyz
attr PoolController reAuthRegex /sign-in
attr PoolController sid01Data {"username":"xy..","password":"xz..","agree":"on" }
attr PoolController sid01IdRegex .*"(.*-.*-.*-[0-9a-z]*).*
attr PoolController sid01URL https://pool.aseko.com/api/login
attr PoolController sidHeader1 Content-Type: application/json
attr PoolController sidHeader2 Accept: */*

Vielen Dank für eure Hilfe !

Onkel Tom
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: ch.eick am 04 April 2023, 13:43:57
Hallo zusammen,

ich habe da noch ein Problem gefunden.
Bei einem get mit JSON und OExpr wird die OExpr anscheinend für jedes reading durchlaufen, es sollte aber nur für das definierte reading sein.
attr EVU_Tibber get02Data { "query": "{viewer {home(id:\"%%homeID%%\") {currentSubscription {priceInfo {current {total startsAt} today {total startsAt} tomorrow {total startsAt}}}}}}" }

attr EVU_Tibber get02JSON data_viewer_home_currentSubscription_priceInfo

attr EVU_Tibber get02-1Name current_date
attr EVU_Tibber get02-1OExpr $val =~ s/T/ /g ;; substr($val,0,19)
attr EVU_Tibber get02-2Name current_price                            <<<< hier gibt es kein OExpr, es wird aber get02-1OExpr angewendet
attr EVU_Tibber get02-3Name fc0_00_startsAt                          <<<< da soll es auch verwendet werden, aber ist noch nicht angegeben.
attr EVU_Tibber get02-4Name fc0_00_total
attr EVU_Tibber get02-5Name fc0_01_startsAt
attr EVU_Tibber get02-6Name fc0_01_total

< snip >

attr EVU_Tibber get02Header01 Content-Type: application/json
attr EVU_Tibber get02Header02 Authorization: Bearer %%token%%
attr EVU_Tibber get02Name 02_priceAll
attr EVU_Tibber get02URL https://api.tibber.com/v1-beta/gql
Das ist zwar jetzt ganz schön, weil ich es nur einmal devinieren muss, könnte aber zu side effects führen.

2023.04.04 13:35:23.882 5: EVU_Tibber: perl expression eval evaluated package main; my $timeDiff = $oRef->{'$timeDiff'};$val =~ s/T/ /g ; substr($val,0,19) to 2023-04-05 21:00:00
2023.04.04 13:35:23.882 5: EVU_Tibber: ExtractReading for get02-93 sets 02_priceAll-93 to 2023-04-05 21:00:00
2023.04.04 13:35:23.882 5: EVU_Tibber: ExtractReading value as hex is 323032332d30342d30352032313a30303a3030
2023.04.04 13:35:23.883 5: EVU_Tibber: perl expression eval evaluated package main; my $timeDiff = $oRef->{'$timeDiff'};$val =~ s/T/ /g ; substr($val,0,19) to 0.347
2023.04.04 13:35:23.883 5: EVU_Tibber: ExtractReading for get02-94 sets 02_priceAll-94 to 0.347
2023.04.04 13:35:23.883 5: EVU_Tibber: ExtractReading value as hex is 302e333437
2023.04.04 13:35:23.884 5: EVU_Tibber: perl expression eval evaluated package main; my $timeDiff = $oRef->{'$timeDiff'};$val =~ s/T/ /g ; substr($val,0,19) to 2023-04-05 22:00:00
2023.04.04 13:35:23.884 5: EVU_Tibber: ExtractReading for get02-95 sets 02_priceAll-95 to 2023-04-05 22:00:00
2023.04.04 13:35:23.884 5: EVU_Tibber: ExtractReading value as hex is 323032332d30342d30352032323a30303a3030

VG  Christian
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 April 2023, 19:02:24
Hallo Christian,

da hast Du einen uralten Bug gefunden. Thanx!
Hier eine neue Version.

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 17 April 2023, 19:24:21
Nabend,

ab und zu kommt es vor, das ich einen Wert "0.0" bekomme, da das Device down ist. Der letzte Wert zum Beispiel ist "472.4"
Meine Regex ist
(\d+[.]\d+)
Ich habe schon eine angepasste Regex probiert, für Werte von 0.1 bis 9999.9.
(9999(\.[0-9])?|[1-9][0-9]{0,3}(\.[0-9])?|0?\.[1-9])
Diese wird aber nicht genommen. Ist es möglich "0.0" explizit zu ignorieren?
Ich habe auch schon mit MaxAge und MaxAgeReplacement $val rumgespielt, bisher ohne Erfolg.
Auch da lief es auf "0.0" hinaus.

Gruß schwatter
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 April 2023, 20:02:05
Hallo schwatter,

poste doch mal Deine vollständige Konfiguration.
Vermutlich hängt es nicht an der Regex ...

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 18 April 2023, 21:52:20
Nabend,

habe mehrere Microinverter die schlafen gehen.

Internals:
   BUSY       0
   DEF        http://xxx:xxx@192.168.178.72/status.html 300
   FUUID      63255e2b-f33f-86cf-e15c-d8a18dcd0b074ca6
   Interval   300
   MainURL    http://xxx:xxx@192.168.178.72/status.html
   ModuleVersion 4.1.15 - 17.12.2022
   NAME       PV_Deye1600_01
   NOTIFYDEV  global
   NR         373
   NTFY_ORDER 50-PV_Deye1600_01
   STATE      Aktuell: 0 Wh - Heute: 6.0 kWh - Total: 478.4 kWh<br>
Rssi: 59% - Ip: 192.168.178.72 - 2023-04-18 20:22:45
   TYPE       HTTPMOD
   eventCount 454
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       http://192.168.178.72:80
     auth       1
     data       
     displayurl http://xxx:xxx@192.168.178.72/status.html
     errno      113
     header     
     host       192.168.178.72
     httpversion 1.0
     ignoreredirects 1
     loglevel   4
     path       /status.html
     protocol   http
     pwd        xxx
     redirects  0
     timeout    8
     url        http://xxx:xxx@192.168.178.72/status.html
     user       xxx
     sslargs:
   QUEUE:
   READINGS:
     2023-04-18 20:17:49   IP              192.168.178.72
     2023-04-18 20:22:45   Power           0
     2023-04-18 20:17:49   RSSI            59
     2023-01-01 22:10:26   Start_Kw        241672
     2023-04-18 20:12:42   Today           6.0
     2023-04-18 20:12:42   Total           478.4
     2023-04-17 19:27:41   Total-1         472.4
     2023-04-17 19:27:41   Total-3         .4
     2023-04-13 21:16:24   Zero            0
   REQUEST:
     context    reading
     data       
     header     
     ignoreredirects 0
     num        unknown
     retryCount 0
     type       update
     url        http://xxx:xxx@192.168.178.72/status.html
   defptr:
     readingBase:
       IP         reading
       Power      reading
       RSSI       reading
       Today      reading
       Total      reading
       Total-1    reading
       Total-2    reading
       Total-3    reading
     readingNum:
       IP         05
       Power      01
       RSSI       04
       Today      02
       Total      03
       Total-1    03
       Total-2    03
       Total-3    03
     readingOutdated:
       Power      1
       Total-1    1
       Total-3    1
     readingSubNum:
       Total-1    -1
       Total-2    -2
       Total-3    -3
     requestReadings:
       update:
         IP         reading 05
         Power      reading 01
         RSSI       reading 04
         Today      reading 02
         Total      reading 03
         Total-1    reading 03-1
         Total-2    reading 03-2
         Total-3    reading 03-3
   hmccu:
Attributes:
   cmdIcon    reread:refresh
   enforceGoodReadingNames 1
   icon       solar
   reading01MaxAge 600
   reading01MaxAgeReplacement Zero
   reading01MaxAgeReplacementMode reading
   reading01Name Power
   reading01Regex var webdata_now_p = "(\d+)"
   reading02MaxAge 61200
   reading02MaxAgeReplacement $val
   reading02MaxAgeReplacementMode expression
   reading02Name Today
   reading02Regex var webdata_today_e = "(\d+[.]\d+)"
   reading03MaxAge 61200
   reading03MaxAgeReplacement $val
   reading03MaxAgeReplacementMode expression
   reading03Name Total
   reading03Regex var webdata_total_e = "(\d+[.]\d+)"
   reading04Name RSSI
   reading04Regex var cover_sta_rssi = "(100|[1-9]?\d)%"
   reading05Name IP
   reading05Regex var cover_sta_ip = "(\d+[.]\d+[.]\d+[.]\d+)"
   room       14.PV
   stateFormat Aktuell: [$name:Power] Wh - Heute: [$name:Today] kWh - Total: [$name:Total] kWh<br>
Rssi: [$name:RSSI]% - Ip: [$name:IP] - [$name:Power:t]
   timeout    8
   webCmd     reread

defmod PV_Deye1600_01 HTTPMOD http://xxx:xxx@192.168.178.72/status.html 300
attr PV_Deye1600_01 cmdIcon reread:refresh
attr PV_Deye1600_01 enforceGoodReadingNames 1
attr PV_Deye1600_01 icon solar
attr PV_Deye1600_01 reading01MaxAge 600
attr PV_Deye1600_01 reading01MaxAgeReplacement Zero
attr PV_Deye1600_01 reading01MaxAgeReplacementMode reading
attr PV_Deye1600_01 reading01Name Power
attr PV_Deye1600_01 reading01Regex var webdata_now_p = "(\d+)"
attr PV_Deye1600_01 reading02MaxAge 61200
attr PV_Deye1600_01 reading02MaxAgeReplacement $val
attr PV_Deye1600_01 reading02MaxAgeReplacementMode expression
attr PV_Deye1600_01 reading02Name Today
attr PV_Deye1600_01 reading02Regex var webdata_today_e = "(\d+[.]\d+)"
attr PV_Deye1600_01 reading03MaxAge 61200
attr PV_Deye1600_01 reading03MaxAgeReplacement $val
attr PV_Deye1600_01 reading03MaxAgeReplacementMode expression
attr PV_Deye1600_01 reading03Name Total
attr PV_Deye1600_01 reading03Regex var webdata_total_e = "(\d+[.]\d+)"
attr PV_Deye1600_01 reading04Name RSSI
attr PV_Deye1600_01 reading04Regex var cover_sta_rssi = "(100|[1-9]?\d)%"
attr PV_Deye1600_01 reading05Name IP
attr PV_Deye1600_01 reading05Regex var cover_sta_ip = "(\d+[.]\d+[.]\d+[.]\d+)"
attr PV_Deye1600_01 room 14.PV
attr PV_Deye1600_01 stateFormat Aktuell: [$name:Power] Wh - Heute: [$name:Today] kWh - Total: [$name:Total] kWh<br>\
Rssi: [$name:RSSI]% - Ip: [$name:IP] - [$name:Power:t]
attr PV_Deye1600_01 timeout 8
attr PV_Deye1600_01 webCmd reread

setstate PV_Deye1600_01 Aktuell: 0 Wh - Heute: 6.0 kWh - Total: 478.4 kWh<br>\
Rssi: 59% - Ip: 192.168.178.72 - 2023-04-18 20:22:45
setstate PV_Deye1600_01 2023-04-18 20:17:49 IP 192.168.178.72
setstate PV_Deye1600_01 2023-04-18 20:22:45 Power 0
setstate PV_Deye1600_01 2023-04-18 20:17:49 RSSI 59
setstate PV_Deye1600_01 2023-01-01 22:10:26 Start_Kw 241672
setstate PV_Deye1600_01 2023-04-18 20:12:42 Today 6.0
setstate PV_Deye1600_01 2023-04-18 20:12:42 Total 478.4
setstate PV_Deye1600_01 2023-04-17 19:27:41 Total-1 472.4
setstate PV_Deye1600_01 2023-04-17 19:27:41 Total-3 .4
setstate PV_Deye1600_01 2023-04-13 21:16:24 Zero 0

reading01MaxAgeReplacement ist gewollt und wird auf "0" gesetzt.
Heute ist mal alles ok....

Gruß schwatter
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 18 April 2023, 22:31:59
Um welches Reading geht es denn?
Wie sieht die Response aus, wenn 0.0 herauskommt?
Und antwortet das Gerät in dem Fall überhaupt?
Kannst Du mal verbose auf 5 setzen und dann einen Auszug aus dem Log schicken, in dem man sieht, was im Fehlerfall als Antwort gesendet wird und wie diese Antwort Geparden wird?

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 19 April 2023, 18:10:13
Sorry - meinte natürlich verbose 5 :-)
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 19 April 2023, 22:50:26
Nabend,

ok, werde ich versuchen. Es geht um die Readings Today und Total. Power setzte ich gewollt auf 0.
Momentan kann ich nix beitragen. Heute ist der 2 Tag, an dem es bei allen 3 Invertern ohne Ausfall
mit meinen Settings klappt... Kann nur mutmaßen, das bei Schwachlicht am Abend kurzzeitig 0.0
im Inverterlogger angezeigt wird.

Gruß schwatter
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 22 April 2023, 14:07:06
Hallo,

bist Du sicher, dass 0.0 kommt weil das Device down ist und nicht weil das Device tatsächlich 0.0 liefert?
Wenn ein Webserver keine Daten liefert, dann setzt HTTPMOD auch keine Readings. Lediglich das MaxAge greift dann eventuell, wobei das auch nur aktiv wird, wenn gelesene Daten verarbeitet werden.

Wenn Dein Device tatsächlich aktiv ist und 0.0 liefert und Du nur bei diesem Wert verhindern möchtest, dass Readings aktualisiert werden, dann geht das ggf. mit einer IgnoreExpr. Die fehlt noch in der Doku (siehe https://forum.fhem.de/index.php?topic=45176.1155). Funktioniert aber wie bei Modbus. Wenn die Expression 1 liefert, dann wird der Wert ignoriert. Also z.B. $val eq '0'
Gruss
  Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: schwatter am 22 April 2023, 19:45:04
Nabend,

vor 3 Tagen ist es wieder passiert. Gestern nicht, als ich geloggt habe...
Sicher bi ich mir nicht, passiert halt kurz vor Ende. Vielleicht passiert da etwas
wie schlaf, aufwachen,schlaf und dann kommt kurz Müll.

Danke für den Link, das hier

attr reading01IgnoreExpr $val <= $oldVal
sieht doch genau danach aus, wonach ich suche.

Gruß schwatter
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: mumpitzstuff am 25 Juni 2023, 21:14:29
Gibt es eine einfache Möglichkeit das überschreiben der Readings zu verhindern, wenn man sich über getXURL mehrere requests definiert hat, welche einen JSON Output zurück liefern, bei denen sich nur die Werte unterscheiden? Aktuell Habe ich nach dem Aufruf von get1URL die Daten der ersten Abfrage in den Readings und diese werden durch die Abfrage von get2URL wieder überschrieben. Der Einfachheit halber habe ich ExtractAllJson aktuell auf 1 stehen.
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Juni 2023, 17:39:21
Hallo mumpitzstuff,

wenn Du in einer JSON-Response mit ExtractAllJson alle Werte in Readings packst, dann werden evt. schon existierende Readings mit gleichem Namen überschrieben.
Wenn Du nur wenige Readings überschreiben möchtest, dann müsstest Di ExtractAllJson rausnehmen und nur die Readings explizit angeben, die bei dem Request auch relevant sind.

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DigiNecro am 30 Juni 2023, 22:57:46
Zitat von: betateilchen am 22 Februar 2023, 14:05:16
Zitat von: DigiNecro am 22 Februar 2023, 10:16:30Sorry, ich bin gerade bissl eingespannt. Ich werd aber mal was zusammenstellen. Danke für das Angebot!

Warum für alles immer HTTPMOD, insbesondere wenn das Ergebnis JSON ist?
Das werde ich in diesem Leben wohl nicht mehr verstehen.

defmod witzapi JsonMod https://witzapi.de/api/joke/?language=de
attr witzapi readingList complete()

Funktioniert einwandfrei, auch mit den indischen Nachbarn - siehe Screenshot.

Lag einfach daran, dass ich da grad mit HTTPMOD rumgespielt hab  O:-)
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: debu am 08 Juli 2023, 19:42:22
Hallo zusammen,

ich würde gerne einen POST request über fhem absetzen. Scheinbar ist HTTPMOD das Mittel der Wahl. Allerdings bekomme ich es leider nicht zum laufen. Bekomme immer einen 405 Method not allowed. Es wird trozt meiner settings ein GET request abgesetzt.
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      64a90d06-f33f-3cde-fac8-892deebaad2ddb85
   Interval   0
   MainURL   
   ModuleVersion 4.1.12 - 19.4.2022
   NAME       tedee_lock
   NOTIFYDEV  global
   NR         1495420
   NTFY_ORDER 50-tedee_lock
   STATE      ???
   TYPE       HTTPMOD
   eventCount 4
   httpbody   
   value     
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://api.tedee.com:443
     auth       0
     buf       
     code       405
     compress   1
     conn       
     data       
     displayurl https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     header     Accept: application/json
Authorization: ***
Content-Type: application/json
User-Agent: PostmanRuntime/7.29.2
Access-Control-Request-Method: POST
X-HTTP-Method-Override: POST
     host       api.tedee.com
     httpheader HTTP/1.1 405 Method Not Allowed
Content-Length: 0
Connection: close
Date: Sat, 08 Jul 2023 09:06:18 GMT
Allow: POST
Request-Context: **********
Strict-Transport-Security: max-age=2592000
X-Correlation-ID: '*****************'
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     path       /api/v1.30/my/lock/***/operation/lock
     protocol   https
     redirects  0
     timeout    2
     url        https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    get
     data       
     header     Accept: application/json
Authorization: ***
Content-Type: application/json
User-Agent: PostmanRuntime/7.29.2
Access-Control-Request-Method: POST
X-HTTP-Method-Override: POST
     ignoreredirects 0
     num        1
     retryCount 0
     type       get1
     url        https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     value     
Attributes:
   get1Header1 Accept: application/json
   get1Header2 Authorization: ***
   get1Header3 Content-Type: application/json
   get1Header4 User-Agent: PostmanRuntime/7.29.2
   get1Header5 Access-Control-Request-Method: POST
   get1Header6 X-HTTP-Method-Override: POST
   get1Name   lock
   get1URL    https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
   reading1Name success
   reading1Regex success':([\d\.]+)
   requestData { "test": "success"}
   requestHeader1 Accept: application/json
   requestHeader2 Authorization: ***
   requestHeader3 Content-Type: application/json
   requestHeader4 User-Agent: PostmanRuntime/7.29.2
   requestHeader5 Access-Control-Request-Method: POST
   requestHeader6 X-HTTP-Method-Override: POST
   room       Server
   set01Name  lock
   set01URL   https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
   showBody   1
   showError  1

Was mach ich falsch? Oder ist HTTPMOD nicht geeignet fpr POST requests?

Danke und beste Grüße
debu
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: debu am 09 Juli 2023, 09:06:42
Hi zusammen,

habs doch noch hinbekommen. POST geht wohl nur über set* Attribute.
Internals:
   BUSY       0
   CFGFN     
   DEF        none 0
   FUUID      64a90d06-f33f-3cde-fac8-892deebaad2ddb85
   Interval   0
   MainURL   
   ModuleVersion 4.1.12 - 19.4.2022
   NAME       tedee_lock
   NOTIFYDEV  global
   NR         1495420
   NTFY_ORDER 50-tedee_lock
   STATE      ???
   TYPE       HTTPMOD
   eventCount 23
   httpbody   {"success":true}
   value      01
   CompiledRegexes:
   HttpUtils:
     NAME       
     addr       https://api.tedee.com:443
     auth       0
     code       202
     compress   1
     conn       
     data       {"dummy" : "test"}
     displayurl https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     header     Accept: application/json
Authorization: ***
Content-Type: application/json
     host       api.tedee.com
     httpheader HTTP/1.1 202 Accepted
Connection: close
Content-Type: application/json; charset=utf-8
X-Correlation-ID: ****
     httpversion 1.0
     hu_blocking 0
     hu_filecount 1
     hu_port    443
     hu_portSfx
     ignoreredirects 1
     loglevel   4
     method     POST
     path       /api/v1.30/my/lock/***/operation/lock
     protocol   https
     redirects  0
     timeout    2
     url        https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     sslargs:
   QUEUE:
   READINGS:
   REQUEST:
     context    set
     data       {"dummy" : "test"}
     header     Accept: application/json
Authorization: ***
Content-Type: application/json
     ignoreredirects 0
     method     POST
     num        01
     retryCount 0
     type       set01
     url        https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
     value      01
Attributes:
   enableCookies 1
   handleRedirects 1
   reading01Name success
   reading01Regex success':([\d\.]+)
   room       Server
   set01Data  {"dummy" : "test"}
   set01Header1 Accept: application/json
   set01Header2 Authorization: ***
   set01Header3 Content-Type: application/json
   set01Method POST
   set01Name  lock
   set01URL   https://api.tedee.com/api/v1.30/my/lock/***/operation/lock
   showBody   1
   showError  1
   webCmd     lock 01

Beste Grüße
DeBu
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 17 September 2023, 17:43:12
Ich kriegs leider ums Verrecken nicht hin, ein HTTPMOD-set zu definieren, das mit POST arbeitet. Ich habe schon in zwei threads gepostet, hier (https://forum.fhem.de/index.php?topic=134998.0) und hier (https://forum.fhem.de/index.php?topic=134946.0), bin aber nicht wirklich weiter.

Um irgendwelche Wechselwirkungen zu minimieren, habe ich jetzt ein rudimentäres device nur für diesen Zweck angelegt:
define Tecalor_Lueften HTTPMOD http://servicewelt/?s=4,2,2 1000
attr Tecalor_Lueften room Xprimtl
attr Tecalor_Lueften set01Data [{"name":"val91","value":"$val"}]
attr Tecalor_Lueften set01Method POST
attr Tecalor_Lueften set01Name I_Zuluft1
attr Tecalor_Lueften set01URL http://192.168.188.35//save.php
attr Tecalor_Lueften verbose 5
#   BUSY       0
#   CFGFN     
#   DEF        http://servicewelt/?s=4,2,2 1000
#   FUUID      650718f5-f33f-a50b-e455-ee9f11051e4ff54a
#   Interval   1000
#   MainURL    http://servicewelt/?s=4,2,2
#   ModuleVersion 4.1.16 - 4.4.2023
#   NAME       Tecalor_Lueften
#   NOTIFYDEV  global
#   NR         6588
#   NTFY_ORDER 50-Tecalor_Lueften
#   STATE      ???
#   TYPE       HTTPMOD
#   eventCount 6
#   value      23
#   HTTPCookieHash:
#     PHPSESSID;/:
#       Name       PHPSESSID
#       Options    path=/
#       Path       /
#       Value      39b8d8b88690d412121acc0ca67b48a9
#   HttpUtils:
#     NAME       
#     addr       http://192.168.188.35:80
#     auth       0
#     buf       
#     code       200
#     compress   1
#     conn       
#     data       [{"name":"val91","value":"23"}]
#     displayurl http://192.168.188.35//save.php
#     header     Cookie: PHPSESSID=39b8d8b88690d412121acc0ca67b48a9
#     host       192.168.188.35
#     httpheader HTTP/1.0 200 OK
#Connection: close
#X-Powered-By: PHP/5.3.0
#Expires: Thu, 19 Nov 1981 08:52:00 GMT
#Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
#Pragma: no-cache
#Content-type: application/json
#Content-Length: 78
#Date: Sun, 17 Sep 2023 15:26:07 GMT
#Server: lighttpd/1.4.19
#     httpversion 1.0
#     hu_blocking 0
#     hu_filecount 1
#     hu_port    80
#     hu_portSfx
#     ignoreredirects 1
#     loglevel   4
#     method     POST
#     path       //save.php
#     protocol   http
#     redirects  0
#     timeout    2
#     url        http://192.168.188.35//save.php
#     sslargs:
#   QUEUE:
#   READINGS:
#   REQUEST:
#     context    set
#     data       [{"name":"val91","value":"$val"}]
#     header     
#     ignoreredirects 0
#     method     POST
#     num        01
#     retryCount 0
#     type       set01
#     url        http://192.168.188.35//save.php
#     value      23
#   hmccu:
#
Bei Aufruf mit z.B. 'set Tecalor_Lueften I_Zuluft1 20' ist aber die einzige POST message, die im Browser-F12-Fenster auftaucht, diese: POST http://192.168.188.22:8083/fhem
Das verbose=5 log sieht so aus:2023.09.17 17:38:20 5: Tecalor_Lueften: set called with I_Zuluft1 10
2023.09.17 17:38:20 5: Tecalor_Lueften: set found option I_Zuluft1 in attribute set01Name
2023.09.17 17:38:20 4: Tecalor_Lueften: set will now set I_Zuluft1 -> 10
2023.09.17 17:38:20 5: Tecalor_Lueften: AddToQueue adds type set01 to URL http://192.168.188.35//save.php, data [{"name":"val91","value":"$val"}], no headers, retry 0, initial queue len: 0
2023.09.17 17:38:20 5: Tecalor_Lueften: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.09.17 17:38:20 5: Tecalor_Lueften: HandleSendQueue - call with HTTP METHOD: POST
2023.09.17 17:38:20 5: Tecalor_Lueften: HandleSendQueue is using Cookie PHPSESSID with path / and Value 39b8d8b88690d412121acc0ca67b48a9 (key PHPSESSID;/, destination path is //save.php)
2023.09.17 17:38:20 5: Tecalor_Lueften: DoCookies is adding Cookie header: PHPSESSID=39b8d8b88690d412121acc0ca67b48a9
2023.09.17 17:38:20 4: Tecalor_Lueften: HandleSendQueue sends set01 with timeout 2 to http://192.168.188.35//save.php,
data: [{"name":"val91","value":"10"}],
header: Cookie: PHPSESSID=39b8d8b88690d412121acc0ca67b48a9
2023.09.17 17:38:21 5: Tecalor_Lueften: ReadCallback called from __ANON__
2023.09.17 17:38:21 4: Tecalor_Lueften: Read callback: request type was set01 retry 0,
header: HTTP/1.0 200 OK
Connection: close
X-Powered-By: PHP/5.3.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: application/json
Content-Length: 78
Date: Sun, 17 Sep 2023 15:37:44 GMT
Server: lighttpd/1.4.19, body length 78
2023.09.17 17:38:21 5: Tecalor_Lueften: Read callback: body
{"success":true,"message":"Die Einstellungen wurden erfolgreich gespeichert."}
2023.09.17 17:38:21 4: Tecalor_Lueften: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.09.17 17:38:21 5: Tecalor_Lueften: GetCookies is looking for Cookies
2023.09.17 17:38:21 5: Tecalor_Lueften: ExtractSid called, context set, num 01
2023.09.17 17:38:21 4: Tecalor_Lueften: checking for redirects, code=200, ignore=0
2023.09.17 17:38:21 4: Tecalor_Lueften: no redirects to handle
2023.09.17 17:38:21 5: Tecalor_Lueften: Read callback sets LAST_REQUEST to set01
2023.09.17 17:38:21 5: Tecalor_Lueften: CheckAuth decided no authentication required

Darin die Meldung {"success":true,"message":"Die Einstellungen wurden erfolgreich gespeichert."} zeigt an, das zumindest das Gerät etwas empfangen hat und antwortet. Allein, die POST Daten sind offensichtlich nicht angekommen.

Nach zwei Tagen trial-error habe ich keine Ahnung, wie ich weitermachen könnte. Was mach ich falsch?

-Franz
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 20 September 2023, 19:19:15
Hallo Franz,

es liegt nicht daran, dass Du kein set mit Post machen kannst. Der Request scheint laut Log zu funktionieren und ist auch ein Post.
Das Problem ist dass Deine Lüftungsanlage offenbar die gesendeten Daten nicht korrekt verarbeitet und trotzdem eine Bestätigung zurücksendet.

Um das Problem zu lösen würde ich zunächst mit dem Browser über Burp auf die Lüftung gehen und den Wert ändern. Dabei alles aufzeichnen und dann genau diesen Request mit allen Headern, Cookies, Tokens o.ä. in HTTPMOD nachbilden.

Wird denn über den Browser kein Login abgefragt?
Falls ja müsstest Du das Einloggen auch im HTTPMOD nachbauen!

In Deinem Mitschnitt werden die Daten kodiert gesendet:
data=%5B%7B%22name%22%3A%22val91%22%2C%22value%22%3A%2247%22%7D%5D
Warum bildest Du das nicht nach sondern schickst es ohne Kodierung?

Gruss
   Stefan

Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 22 September 2023, 17:24:21
Zitat von: StefanStrobel am 20 September 2023, 19:19:15Um das Problem zu lösen würde ich zunächst mit dem Browser über Burp auf die Lüftung gehen und den Wert ändern. Dabei alles aufzeichnen

Der HTTP traffic sieht dann (in Burp-Suite) so aus:
Unbenannt2.png
Und die erste Zeile mit POST so:
Unbenannt3.png

Versuch ich das gleiche mit FHEM, sieht es so aus:
Unbenannt0.png
bzw. das POST im Detail:
Unbenannt1.png

Es werden in dem POST aus FHEM heraus also gar keine Daten geschickt. Ich habe auch alles vieles Mögliche probiert mit diversen Attributen wie setHeader1,2 usw. und auch mit set01Header1,2 usw. und auch requestHeader, aber der von BURP abgefangene POST request ändert sich nie.

Irgendwas habe ich anscheinend gar nicht verstanden...

EDIT:
Das 1. Bild falsch, ist jetzt korrigiert



Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 01 Oktober 2023, 13:44:50
Hallo,
Ich komme nicht weiter und versuche daher hier nochmal eine detaillierte Beschreibung meines Vorgehens.
Zunächst ist da die Formularseite, mit der die Luftvolumenströme gesetzt werden können:
Formularseite.png
Man trägt dort den/die gewünschten Werte ein und klickt dann auf den 'Speichern'-button. Dessen hinterlegter HTML-code sieht so aus:
<div class="button left" onclick="document.forms['werte'].onsubmit();"><div class="bg_r">&nbsp;</div><a>Speichern</a></div>
Was dabei dann passiert, zeigen die folgenden Screenshots der F12-Netzwerkanalyse-Seite des Browsers (Ich habe die Seite so vergrößert, dass von der Formularseite nur noch der 'Speichern'-button sichtbar ist). Relevant ist wohl nur die erste Zeile mit der POST Anfrage. Deren Details sind in der rechten Fensterhälfte in den Tabs 'Kopfzeilen', 'Cookies', 'Anfrage', 'Antwort' und 'Aufrufliste' aufgeführt. Der Inhalt der Tabs ist in den folgenden Screenshots zu sehen.
Klick-auf-Speichern.png 
Tab-Anfrage.png
Tab-Antwort.png
Tab-Aufrufliste.png   
Tab-Cookies.png
Das ist inhaltlich das gleiche, wie im folgenden Burp_Suite Text (bzw. den Burp-Suite screenshots meines vorigen Posts):
POST //save.php HTTP/1.1
Host: 192.168.188.35
Content-Length: 362
Accept: text/plain, */*; q=0.01
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.5938.132 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Origin: http://192.168.188.35
Referer: http://192.168.188.35//?s=4,2,2
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: PHPSESSID=0caac0c81912686374fcaaa614f476ca
Connection: close

data=%5B%7B%22name%22%3A%22val91%22%2C%22value%22%3A%22125%22%7D%2C%7B%22name%22%3A%22val92%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val93%22%2C%22value%22%3A%22270%22%7D%2C%7B%22name%22%3A%22val94%22%2C%22value%22%3A%22130%22%7D%2C%7B%22name%22%3A%22val95%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val96%22%2C%22value%22%3A%22270%22%7D%5D


Ich verstehe aber nicht, warum bei all meinen Versuchen, das mittels HTTPMOD in FHEM nachzubilden, beim POST-Befehl unter 'Host' im F12-Analysefenster immer nur die IP-Adresse des FHEM-Servers auftaucht (192.168.188.22:8083) und nicht die IP-Adresse 192.168.188.35 des Lüftungsgeräts. Selbstverständlich habe ich auch versucht, die optionalen header Felder 'origin' und 'referer' mit Attributen 'set01Header[1,2]' anzugeben, und sie tauchen auch in den Anfrage-Kopfzeilen korrekt auf. Nur funktionieren tut's nicht...

Kann es sein, dass der beschriebene Ablauf mit HTTPMOD überhaupt nicht nachzubilden ist?

Bin für jede Hilfe dankbar
-Franz

P.S.:
Gibt es eine Möglichkeit, bei foren-attachments von Bildern die Größe einszustellen?
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 09 Oktober 2023, 15:24:14
Hallo Franz,

ich bin mir nicht sicher ob ich verstehe was Du machen möchtest bzw wie Du vorgehst.
Wenn Du im Browser mit F12 über die Entwicklertools des Browsers Requests ansiehst, dann siehst Du natürlich immer nur die Kommunikation zwischen Deinem Browser und Fhem.
Was HTTPMOD bzw. Fhem mit der Website Deiner Lüftungsanlage redet, kann Dein Browser natürlich nicht sehen.
Dafür solltest Du im Fhem-Log nachsehen. Wenn das Httpmod-Gerät auf Verbose 5 steht, siehst Du den ausgehenden Request im Log.
Ob die Website die Daten akzeptiert ist eine andere Frage.
Wie wird denn authentisiert?

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 09 Oktober 2023, 17:30:58
Zitat von: StefanStrobel am 09 Oktober 2023, 15:24:14ich bin mir nicht sicher ob ich verstehe was Du machen möchtest bzw wie Du vorgehst.
Wenn Du im Browser mit F12 über die Entwicklertools des Browsers Requests ansiehst, dann siehst Du natürlich immer nur die Kommunikation zwischen Deinem Browser und Fhem.

Was HTTPMOD bzw. Fhem mit der Website Deiner Lüftungsanlage redet, kann Dein Browser natürlich nicht sehen.
Dafür solltest Du im Fhem-Log nachsehen. Wenn das Httpmod-Gerät auf Verbose 5 steht, siehst Du den ausgehenden Request im Log.
Das verbose5 log sieht so aus:
2023.10.09 17:06:43.941 5: Tecalor_Lueften: set called with I_Zuluft1 33
2023.10.09 17:06:43.942 5: Tecalor_Lueften: set found option I_Zuluft1 in attribute set01Name
2023.10.09 17:06:43.943 4: Tecalor_Lueften: set will now set I_Zuluft1 -> 33
2023.10.09 17:06:43.944 5: Tecalor_Lueften: AddToQueue adds type set01 to URL http://192.168.188.35//save.php, data %5B%7B%22name%22%3A%22val91%22%2C%22value%22%3A%2240%22%7D%2C%7B%22name%22%3A%22val92%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val93%22%2C%22value%22%3A%22270%22%7D%2C%7B%22name%22%3A%22val94%22%2C%22value%22%3A%22130%22%7D%2C%7B%22name%22%3A%22val95%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val96%22%2C%22value%22%3A%22270%22%7D%5D, header Origin: 192.168.188.35, retry 0, initial queue len: 0
2023.10.09 17:06:43.945 5: Tecalor_Lueften: HandleSendQueue called from AddToSendQueue, qlen = 1
2023.10.09 17:06:43.946 5: Tecalor_Lueften: HandleSendQueue - call with HTTP METHOD: POST
2023.10.09 17:06:43.946 5: Tecalor_Lueften: HandleSendQueue is using Cookie PHPSESSID with path / and Value 8014310949ae5211d77f98925bb6fc32 (key PHPSESSID;/, destination path is //save.php)
2023.10.09 17:06:43.947 5: Tecalor_Lueften: DoCookies is adding Cookie header: PHPSESSID=8014310949ae5211d77f98925bb6fc32
2023.10.09 17:06:43.947 4: Tecalor_Lueften: HandleSendQueue sends set01 with timeout 2 to http://192.168.188.35//save.php,
data: %5B%7B%22name%22%3A%22val91%22%2C%22value%22%3A%2240%22%7D%2C%7B%22name%22%3A%22val92%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val93%22%2C%22value%22%3A%22270%22%7D%2C%7B%22name%22%3A%22val94%22%2C%22value%22%3A%22130%22%7D%2C%7B%22name%22%3A%22val95%22%2C%22value%22%3A%22180%22%7D%2C%7B%22name%22%3A%22val96%22%2C%22value%22%3A%22270%22%7D%5D,
header: Origin: 192.168.188.35
Cookie: PHPSESSID=8014310949ae5211d77f98925bb6fc32
2023.10.09 17:06:44.722 5: Tecalor_Lueften: ReadCallback called from __ANON__
2023.10.09 17:06:44.722 4: Tecalor_Lueften: Read callback: request type was set01 retry 0,
header: HTTP/1.0 200 OK
Connection: close
X-Powered-By: PHP/5.3.0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-type: application/json
Content-Length: 78
Date: Mon, 09 Oct 2023 15:03:59 GMT
Server: lighttpd/1.4.19, body length 78
2023.10.09 17:06:44.722 5: Tecalor_Lueften: Read callback: body
{"success":true,"message":"Die Einstellungen wurden erfolgreich gespeichert."}
2023.10.09 17:06:44.723 4: Tecalor_Lueften: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2023.10.09 17:06:44.723 5: Tecalor_Lueften: GetCookies is looking for Cookies
2023.10.09 17:06:44.723 5: Tecalor_Lueften: ExtractSid called, context set, num 01
2023.10.09 17:06:44.724 4: Tecalor_Lueften: checking for redirects, code=200, ignore=0
2023.10.09 17:06:44.724 4: Tecalor_Lueften: no redirects to handle
2023.10.09 17:06:44.724 5: Tecalor_Lueften: Read callback sets LAST_REQUEST to set01
2023.10.09 17:06:44.724 5: Tecalor_Lueften: CheckAuth decided no authentication required
Es wird also wohl wirklich ein POST gesendet.
Ich weiß aber nicht, ob das dann mit POST gesendete "http://192.168.188.35//save.php" richtig ist. Dass es überhaupt auf dem Tecalor Gateway ein 'save.php' script gibt, habe ich aus dem burp-Mitschnitt gesehen.
ZitatOb die Website die Daten akzeptiert ist eine andere Frage.
Wie wird denn authentisiert?
Authentisiert wird nicht. Ich vermute mittlerweile auch, dass die website die Daten ger nicht akzeptiert. Aber die website "beschwert" sich halt nicht in einer Form, mit der ich was anfangen könnte.

Ich werd bei Gelegenheit noch bisschen weiter rumspielen, vielleicht kommte ja von irgendwo irgendein Geistesblitz...

Danke erstmal,
Gruß
Franz 

Nachtrag:
Ich vermute jetzt, dass es das cookie namens PHPSESSID sein könnte. Ich werd's jetzt mal versuchen, mit dem 'enableCookies' Attribute (hab ich erst jetzt entdeckt...schäm)
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 13 Oktober 2023, 21:01:55
Zitat von: alkazaa am 09 Oktober 2023, 17:30:58Nachtrag:
Ich vermute jetzt, dass es das cookie namens PHPSESSID sein könnte.
PHPSESSID war's auch nicht.
Ich mache es jetzt mit curl, da geht's ganz einfach:
curl -s -d 'data=[{"name":"val91","value":"120"}]' http://192.168.188.35/save.phpKeine Ahnung, warum ich es mit HTTPMOD nicht hinkriege..,
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 13 Oktober 2023, 23:43:55
Hallo Franz,

wie hast Du HTTPMOD denn konfiguriert?
Hast Du die HTTP-Version wie im Burp-Mitschnitt zu sehen auf 1.1 gesetzt und alle Header wie im Burp-Mitschnitt definiert?
In Deinem Log fehlen die.
Curl setzt ja z.B. bei -d automatisch den Header
content-type application/x-www-form-urlencoded
Und im Burp-Mitschnitt war das auch zu sehen. Dein Slot deutet aber darauf hin, dass Du den Header nicht definiert hast.

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: alkazaa am 14 Oktober 2023, 13:43:18
Ich fress den berühmten Besen:
Es muss nicht heißen
attr Tecalor_Lueften set01Data [{"name":"val91","value":"$val"}]sondern
attr Tecalor_Lueften set01Data data=[{"name":"val91","value":"$val"}]
Alles andere (httpVersion, Header, set01Method=POST, etc.) ist nicht nötig. Die Minimal-Konfiguration für den set-Befehl ist also:
attr Tecalor_Lueften set01Data data=[{"name":"val91","value":"$val"}]
attr Tecalor_Lueften set01Name I_Zuluft1
attr Tecalor_Lueften set01URL http://192.168.188.35//save.php

Ich hatte set01Data naiverweise so verstanden, dass da nur die 'data' selber genannt werden, nicht data='data'.

Sorry für den ganzen Aufriss

-Franz
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 07 November 2023, 19:45:48
Hallo zusammen,

anbei eine neue Version von HTTPMOD zum Testen.
Mit dem Attribut (get|set)[0-9]*(-[0-9]+)?ValueSeparator kann man ein Trennzeichen für set-Optionen definieren und dann in einem set mehrere Parameter übergeben, die dann mit $val1, $val2 etc. referenziert werden können.
Zudem habe ich mal versucht, die Extraktion von OAuth-Tokens zu vereinfachen. Siehe Attribut enableTokens. Damit werden automatisch JSON codierte access_token or refresh_token erkannt und gespeichert. In künftigen Requests können die dann als %%ACCESS_TOKEN%% and %%REFRESH_TOKEN%% verwendet werden.

Gruss
  Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: blueberry63 am 23 November 2023, 15:52:08
Hallo,

ich bräuchte mal Hilfe mit einem Reading, dass mehrere Werte, getrennt durch | , zurückliefert:

reading01JSON statetext
reading01Name Status-Text

Wert: Zwischenbehälterfüllstand wird kalibriert|Kesseltemp grösser Wiedereinschalttemp.|Aus

Ich bin nur interessiert am letzten Wert (hier: AUS), kenne mich nicht mit RegEx aus und würde mich freuen, wenn mir jemand den Ausdruck zusammenbauen könnte.

Danke und Gruß
Blueberry63
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Jostar am 27 November 2023, 17:26:39
Hallo zusammen,

replacement26Mode expression
replacement26Regex %%26wind%%
replacement26Value sprintf("%s", ReadingsVal("netatmo_Out","state","� �") )
funktioniert, es werden die Zeichencode korrekt prozessiert und ausgewertet.

Versuche ich die Konfiguration/den Code etwas lesbarer zu gestalten, scheitere ich leider an den Hex-Werten,:
replacement26Value sprintf("%s [color=red]%s[/color]", ReadingsVal("netatmo_Out","state","� �"), [color=red]chr(hex("F000"))[/color] )
Führt zum Absturz von fhem, der letzte Log-Eintrag (verbose 5) scheint das ersetzen gemacht zu haben, allerdings ist das Format etwas anders (also auch nicht lesbar in Buchstaben):
2023.11.27 17:42:24 4: OpenEPaper: HandleSendQueue sends set01 with timeout 4 to http://192.168.178.156/jsonupload,
data: mac=0000021EF888341C&json=[ { "text": [20, 8, "min -1  max 8", "fonts/bahnschrift20", 1] }, { "text": [6, 12, "ï��", "/fonts/weathericons.ttf", 1, 0, 22] }, { "text": [85, 55, "100 rel", "fonts/bahnschrift20", 1, 2] }, { "text": [100, 30, "-1.2 °C", "fonts/calibrib30", 2, 2] }, { "text": [105, 13, "ï��", "/fonts/weathericons.ttf", 1, 0, 36] }, { "text": [4, 45, "ï�º", "/fonts/weathericons.ttf", 1, 0, 22] }, { "text": [75, 65, "�", "/fonts/weathericons.ttf", 1, 2, 36] }, { "text": [2, 112, "Trend: down", "fonts/bahnschrift20", 1] }, { "text": [95, 35, "ï�®", "/fonts/weathericons.ttf", 1, 0, 48] }, { "text": [3,141,"{ap_time}", "", 1] }, { "text": [70,141,"{ap_date}", "", 1] } ], No Header
Wide character in syswrite at FHEM/HttpUtils.pm line 768.

Es scheint irgendwie eine andere Art Codierung zu sein (rot markiertet Teil!). Sichtbar hier nur 1 Zeichen, statt wie bei den anderen Übergaben 3.

Hingegen funktioniert der folgende Ausdruck in der fhem-Befehlszeile wie erwartet:
{ sprintf("hallo".chr(hex("F000"))) }
Ziel sind so kleine Bildchen für das Wetter im übrigen. Symbol-Auswahl in Word: Zeichen.PNG

Jemand vielleicht eine Idee?

Grüße!
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 04 Dezember 2023, 18:21:04
Hallo Jostar,

Die Fhem HttpUtils verwenden syswrite zum Senden der Daten. Da werden Bytes übergeben. Zeichen, die mehrere Bytes lang sind, müsstest Du vermutlich als Bytefolge senden, nicht als Multibyte-Zeichen. Am besten bleibst Du bei UTF-8.

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Aurel_B am 05 Dezember 2023, 08:08:29
Zitat von: blueberry63 am 23 November 2023, 15:52:08Hallo,

ich bräuchte mal Hilfe mit einem Reading, dass mehrere Werte, getrennt durch | , zurückliefert:

reading01JSON statetext
reading01Name Status-Text

Wert: Zwischenbehälterfüllstand wird kalibriert|Kesseltemp grösser Wiedereinschalttemp.|Aus

Ich bin nur interessiert am letzten Wert (hier: AUS), kenne mich nicht mit RegEx aus und würde mich freuen, wenn mir jemand den Ausdruck zusammenbauen könnte.


Schau dir "The Regex Coach" an: http://weitz.de/regex-coach/ (http://weitz.de/regex-coach/). Damit solltest du das hinbekommen und du verlierst die Hemmung vor RegEx  ;)
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Jostar am 07 Dezember 2023, 10:14:12
Zitat von: StefanStrobel am 04 Dezember 2023, 18:21:04Hallo Jostar,

Die Fhem HttpUtils verwenden syswrite zum Senden der Daten. Da werden Bytes übergeben. Zeichen, die mehrere Bytes lang sind, müsstest Du vermutlich als Bytefolge senden, nicht als Multibyte-Zeichen. Am besten bleibst Du bei UTF-8.

Gruss
   Stefan

Würde natürlich gerne bei UTF bleiben, nur das Sonderzeichen nicht "unlesbar" via Copy&Paste als String in die Definition kopieren, sondern numerisch angeben "U+1234". Nur entweder finde ich nicht das richtige Format oder die httputil oder Modul http unterstützen das nicht. Ist das Problem soweit gut beschrieben?
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Heiner33 am 19 Dezember 2023, 09:21:05
Hallo zusammen,

ich hätte da auch schnell eine kurze Frage zu HTTPMOD. Und zwar versuche ich einen Teil der URL dynamisch zu ersetzen mit einer Perl Expression, die mir diesen Wert generiert.

Mein HTTPMOD-Device hat folgende DEF:
DEF https://httpbin.org/get?value=%%DATETIME%%
Die Attribute sehen so aus:
attr httpmod_test replacement0Mode expression
attr httpmod_test replacement0Regex %%DATETIME%%
attr httpmod_test replacement0Value { return "dummy_date_value"; }

Wenn ich mir mit verbose 5 das Log anschaue, dann sehe ich, dass in der URL der "%%DATETIME%%"-Teil nicht ersetzt wurde durch "dummy_date_value".

Könnt ihr mir bitte einen Hinweis geben, was ich falsch mache?

Vielen Dank!
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Jostar am 19 Dezember 2023, 11:15:30
Hallo,

sieht eigentlich plausibel aus, du versuchst mit "get" ein Wert zu übertragen und hoffst also dabei schon auf Ersetzung?

Ich nutze dazu Set und die zusätzlichen Attribute:
Set01Data/Name/URL

Mit http*s* habe ich es aber auch noch nie probiert.

Grüße
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Heiner33 am 19 Dezember 2023, 14:04:09
Hallo,

ja ich verwende nur die URL in der Device Definition selbst, habe keine weiteren Set oder Get-URLs hinterlegt, die brauche ich eigentlich nicht, dachte ich? Vielleicht verstehe ich aber auch grundsätzlich etwas nicht?

Hab mal ein bisschen im Coding des 98_HTTMOD.pm gewühlt und ein paar zusätzliche Loggings-Steps aktiviert. Mein Fehler war ziemlich banal...
Hab meine Attribute jetzt umbenannt in

replacement01Mode
replacement01Regex
replacement01Value

Und jetzt funktioniert es... :-)

Danke und Grüße
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 05 Januar 2024, 22:04:52
Das ist der komplett falsche Thread für Deine Frage.
Hier geht es um die Weiterentwicklung des Moduls, nicht um dessen Anwendung im Einzelfall.

Mach für Deine Frage bitte einen neuen Thread auf.

Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: efyzz am 05 Januar 2024, 23:23:32
Sorry und danke für den freundlichen Hinweis!
Ich hatte den Eindruck, dass hier schon andere sehr anwendungsspezifische Fragen gestellt hatten, aber ich mag mich irren.
Neuer Thread hier:
https://forum.fhem.de/index.php?topic=136527.0 (https://forum.fhem.de/index.php?topic=136527.0)

Aber was hast Du denn da für einen Screenshot angehangen? Sieht so aus, als hättest Du es ausprobiert und es funktioniert bei Dir :)
Antwort natürlich gerne im neuen Thread.

Meinetwegen dann gern meinen Beitrag oben löschen. Danke!
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 15 Januar 2024, 20:04:17
Hi,

ich habe eine Frage bzgl. dem Modul.
Ich habe eine größere JSON Struktur von einem HUB, der alle Jalousien bei mir steuert.
In der Struktur sind also die Endgeräte (mit weiteren JSON Attributen), mit Räumen (mit weiteren JSON Attributen) usw.
Anbei mal ein Auszug:

{
    "Cloud": {
        "DetailedPublishing": false,
        "EnableFullScheduleTelemetry": false,
        "BlockPublishing": {
            "RoomTimeSeries": false,
            "EcoMode": false,
            "BoilerOnOffEvent": true,
            "HotWaterOnOffEvent": true,
            "PercentageDemand": true,
            "FotaProgress": false,
            "SupportPackage": false,
            "PairingToken": false,
            "Notification": false,
            "Describe": false,
            "EntireDataModel": false,
            "ScheduleUpdate": false,
            "SmartPlugUpdate": false,
            "LightUpdate": false,
            "ShutterUpdate": false,
            "TemperatureChangeEvent": false,
            "EventSeriesDiagnostic": false,
            "Heartbeat": false,
            "AutomationEvent": false,
            "SensorEvent": false,
            "EquipmentConfigEvent": false,
            "EquipmentTimeSeries": false,
            "EquipmentDeletionEvent": false,
            "EVSEActionRequest": false,
            "EquipmentSyncEvent": false,
            "ApplicationPowerEvent": false,
            "WeatherConfigEvent": false,
            "EVSocketChargingStatusChangeEvent": false,
            "EVSocketStatusChangeEvent": false,
            "PCMOnlineNotification": false
        },
        "WiserApiHost": "api-nl.wiserair.com",
        "BootStrapApiHost": "bootstrap.gl.struxurewarecloud.com",
        "FioIsRegistered": true
    },
    "HeatingChannel": [
        {
            "id": 1,
            "Name": "Channel-1",
            "PercentageDemand": 0,
            "DemandOnOffOutput": "Off",
            "HeatingRelayState": "Off",
            "IsSmartValvePreventingDemand": false,
            "DemandIsAsynchronous": true
        }
    ],
    "Room": [
        {
            "id": 1,
            "HeatingRate": 1200,
            "ClimateCapabilities": {
                "HeatingSupported": false,
                "CoolingSupported": false,
                "MinimumHeatSetpoint": 50,
                "MaximumHeatSetpoint": 300,
                "MinimumCoolSetpoint": 180,
                "MaximumCoolSetpoint": 300,
                "SetpointStep": 5,
                "AmbientTemperature": false,
                "TemperatureControl": false,
                "OpenWindowDetection": false,
                "HydronicChannelSelection": false,
                "OnOffSupported": false
            },
            "Name": "Badzimmer unten",
            "Mode": "Manual",
            "WindowDetectionActive": false,
            "OccupiedToUnoccupiedDelay": 5,
            "MinimumOccupiedTime": 20,
            "CalculatedTemperature": -32768,
            "CurrentSetPoint": -200,
            "SetpointOrigin": "FromNoControl",
            "DisplayedSetPoint": -200,
            "Invalid": "NothingAssigned",
            "EffectiveMode": "Manual",
            "ControlDirection": "None",
            "Occupancy": "Occupied",
            "OccupancyCapable": false
        },
        {
            "id": 2,
            "HeatingRate": 1200,
            "ClimateCapabilities": {
                "HeatingSupported": false,
                "CoolingSupported": false,
                "MinimumHeatSetpoint": 50,
                "MaximumHeatSetpoint": 300,
                "MinimumCoolSetpoint": 180,
                "MaximumCoolSetpoint": 300,
                "SetpointStep": 5,
                "AmbientTemperature": false,
                "TemperatureControl": false,
                "OpenWindowDetection": false,
                "HydronicChannelSelection": false,
                "OnOffSupported": false
            },
            "Name": "Badezimmer oben",
            "Mode": "Manual",
            "WindowDetectionActive": false,
            "OccupiedToUnoccupiedDelay": 5,
            "MinimumOccupiedTime": 20,
            "CalculatedTemperature": -32768,
            "CurrentSetPoint": -200,
            "SetpointOrigin": "FromNoControl",
            "DisplayedSetPoint": -200,
            "Invalid": "NothingAssigned",
            "EffectiveMode": "Manual",
            "ControlDirection": "None",
            "Occupancy": "Occupied",
            "OccupancyCapable": false
        }
    ],
    "Device": [
        {
            "id": 0,
            "NodeId": 0,
            "ProductType": "Controller",
            "ProductIdentifier": "Controller",
            "ActiveFirmwareVersion": "4.22.4",
            "ModelIdentifier": "WT704R1B30S4",
            "Type": "ZigbeeDevice",
            "UUID": "b84fc8b0-637b-5515-9acc-052049becb09",
            "DeviceLockEnabled": false,
            "DisplayedSignalStrength": "VeryGood",
            "ReceptionOfController": {
                "Rssi": -55
            }
        },
        {
            "id": 1,
            "NodeId": 15471,
            "ProductType": "Shutter",
            "ProductIdentifier": "C4BShutter",
            "ActiveFirmwareVersion": "2.10.1",
            "ModelIdentifier": "Unknown",
            "SerialNumber": "D0CF5EFFFE440746",
            "ProductModel": "1GANG/SHUTTER/1",
            "OtaImageQueryCount": 0,
            "LastOtaImageQueryCount": 3,
            "OtaVersion": 34210303,
            "OtaHardwareVersion": 256,
            "Type": "ZigbeeDevice",
            "UUID": "b4051c31-cb5b-5f51-884e-df1e716c92f2",
            "DeviceLockEnabled": false,
            "DisplayedSignalStrength": "VeryGood",
            "ReceptionOfController": {
                "Rssi": -32,
                "Lqi": 255
            },
            "BindingsStatus": "SetCorrectly",
            "ReportConfigStatus": "SetCorrectly",
            "AttributesStatus": "SetCorrectly"
        }
    ],
    "Zigbee": {
        "NetworkChannel": 20,
        "TargetEBLFile": "../../opt/efr32/firmware_2.8.0.0.bin",
        "PanId": 62004,
        "ZigbeeModuleVersion": "02.43.00.00",
        "TargetEBLFileUnsigned": "../../opt/efr32/firmware_2.8.0.0.u.bin",
        "NetworkChannelRescan": 11,
        "ZigbeeEUI": "B4E3F9FFFE47CF3A"
    },
    "UpgradeInfo": [
        {
            "id": 1,
            "FirmwareFilename": "105E-0800-00060600-0100-01FF.zigbee"
        },
        {
            "id": 2,
            "FirmwareFilename": "105E-0E00-01080000-0000-00FF.zigbee"
        },
        {
            "id": 3,
            "FirmwareFilename": "105E-0201-0000EA64-0000-0000.zigbee"
        },
        {
            "id": 4,
            "FirmwareFilename": "105E-04E1-0000A412-0000-0009.zigbee"
        },
        {
            "id": 5,
            "FirmwareFilename": "105E-04E1-0000EA63-0100-01FF.zigbee"
        },
        {
            "id": 6,
            "FirmwareFilename": "105E-05E1-00000018-0000-0200.zigbee"
        },
        {
            "id": 7,
            "FirmwareFilename": "105E-0A00-00007D02-0000-0000.zigbee"
        },
        {
            "id": 8,
            "FirmwareFilename": "105E-000B-020A01FF-0100-02FF.zigbee"
        },
        {
            "id": 9,
            "FirmwareFilename": "105E-000C-020A01FF-0100-02FF.zigbee"
        },
        {
            "id": 10,
            "FirmwareFilename": "105E-003F-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 11,
            "FirmwareFilename": "105E-0016-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 12,
            "FirmwareFilename": "105E-003D-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 13,
            "FirmwareFilename": "105E-000D-020C02FF-0000-01FF.zigbee"
        },
        {
            "id": 14,
            "FirmwareFilename": "105E-0010-020A00FF-0000-01FF.zigbee"
        },
        {
            "id": 15,
            "FirmwareFilename": "105E-0011-020B0FFF-0000-02FF.zigbee"
        },
        {
            "id": 16,
            "FirmwareFilename": "105E-0012-020D00FF-0000-01FF.zigbee"
        },
        {
            "id": 17,
            "FirmwareFilename": "105E-04b0-01000400-0000-00FF.zigbee"
        },
        {
            "id": 18,
            "FirmwareFilename": "105E-1200-01003500-0000-00FF.zigbee"
        },
        {
            "id": 19,
            "FirmwareFilename": "105E-1201-01003500-0000-00FF.zigbee"
        },
        {
            "id": 20,
            "FirmwareFilename": "105E-1202-01003500-0000-00FF.zigbee"
        },
        {
            "id": 21,
            "FirmwareFilename": "105E-1203-01003500-0000-00FF.zigbee"
        },
        {
            "id": 22,
            "FirmwareFilename": "105E-1204-01003500-0000-00FF.zigbee"
        },
        {
            "id": 23,
            "FirmwareFilename": "120B-210B-00000022-0000-FFFF.zigbee"
        },
        {
            "id": 24,
            "FirmwareFilename": "105E-0024-01060542-0000-09FF.zigbee"
        },
        {
            "id": 25,
            "FirmwareFilename": "105E-0025-01060542-0000-09FF.zigbee"
        },
        {
            "id": 26,
            "FirmwareFilename": "105E-0026-01060542-0000-09FF.zigbee"
        },
        {
            "id": 27,
            "FirmwareFilename": "105E-0027-01060542-0000-09FF.zigbee"
        },
        {
            "id": 28,
            "FirmwareFilename": "105E-0043-020706FF-0000-0000.zigbee"
        },
        {
            "id": 29,
            "FirmwareFilename": "105E-0051-020A00FF-0000-00FF.zigbee"
        },
        {
            "id": 30,
            "FirmwareFilename": "105E-1401-01040200-020F-02FF.zigbee"
        },
        {
            "id": 31,
            "FirmwareFilename": "105E-1400-01040400-0102-01FF.zigbee"
        },
        {
            "id": 32,
            "FirmwareFilename": "105E-1403-01040200-020F-02FF.zigbee"
        },
        {
            "id": 33,
            "FirmwareFilename": "105E-1402-01040400-0102-01FF.zigbee"
        },
        {
            "id": 34,
            "FirmwareFilename": "105E-0013-020B0FFF-0000-02FF.zigbee"
        }
    ],
    "Shutter": [
        {
            "id": 1,
            "DeviceId": 1,
            "Endpoint": 5,
            "ManualLift": 100,
            "ManualTilt": 255,
            "DriveConfig": {
                "LiftOpenTime": 200,
                "LiftCloseTime": 200,
                "TiltTime": 0,
                "TiltEnabled": false,
                "TiltAngleClosed": 90,
                "TiltAngleOpen": 0
            },
            "UUID": "8d5d5d0c-0f02-58b3-9d26-c6c6bb313513",
            "IsLiftPositionSupported": true,
            "IsTiltSupported": true,
            "Name": "Bad unten",
            "RoomId": 1,
            "Mode": "Manual",
            "AwayAction": "NoChange",
            "RespectSummerComfort": true,
            "SummerComfortLift": 50,
            "SummerComfortTilt": 0,
            "CurrentLift": 100,
            "CurrentTilt": 255,
            "ControlSource": "FromManualMode",
            "TargetLift": 100,
            "TargetTilt": 255,
            "LiftMovement": "Stopped",
            "TiltMovement": "Stopped"
        }
    ],
    "DeviceCapabilityMatrix": {
        "Roomstat": true,
        "ITRV": true,
        "SmartPlug": true,
        "UFH": true,
        "UFHFloorTempSensor": true,
        "UFHDewSensor": true,
        "HACT": false,
        "LACT": false,
        "Light": true,
        "Shutter": true,
        "LoadController": true,
        "SmartSocket": true,
        "TwoGangLights": true,
        "FLS": true,
        "BoilerInterface": true,
        "WindowDoorSensor": true,
        "MotionLightSensor": true,
        "WaterLeakageSensor": true,
        "TemperatureHumiditySensor": true,
        "PowerTagE": true,
        "CFMT": true,
        "EVSE": true,
        "SmokeAlarmDevice": true,
        "Airzone": true,
        "NodOnPuck": true,
        "NodOn16APuck": true,
        "EVSocket": true,
        "FilPilotePuck": true,
        "IconicDevices": true
    },
    "FeatureCapability": {
        "Automation": {
            "MaxActions": 10,
            "MaxTriggers": 10,
            "MaxTimeConstraints": 10
        },
        "PTE": {
            "EnergyExport": true
        },
        "ClimateDemandForUI": true
    },
    "System": {
        "SunriseTimes": [
            826,
            825,
            824,
            824,
            823,
            822,
            821,
            820,
            819,
            818,
            817,
            816,
            815
        ],
        "SunsetTimes": [
            1625,
            1626,
            1628,
            1629,
            1631,
            1632,
            1634,
            1636,
            1637,
            1639,
            1641,
            1642,
            1644
        ],
        "isTrialist": false,
        "isProvisioned": true,
        "HardwareGeneration": 2,
        "SummerDiscomfortPrevention": false,
        "SummerComfortAvailable": false,
        "CloudConnectionStatus": "Connected"
    }
}

Kann man aus der Struktur automatisch alle Geräte (Device), Räume (Room) und Jalousien (Shutter) mit deren Attributen erzeugen lassen?
Ich möchte versuchen, dass HTTPMOD mir automatisch alle Geräte und Räume mit Attributen rausließt, sollte sich was ändern, soll das automatisch aktualisiert werden.
Ich tu mich aktuell schwer hier eine Idee zu entwicklen.

Ich dachte an extractAllJson, aber das müsste an einer Stelle anfangen wo ich es will.
JSONPath kann HTTPMOD nicht oder? Ich habe dafür das JsonMod-Modul gefunden, dass könnte das. zB $.Device um alle Device auszulesen?!

Wiederum würde ich gern dann dynamisch eine setURL definieren, der man dann ein Device und ein paar JSON Parameter mitgeben kann, zB den Stand der Jalousie in Prozent.

So sehen die URLs aus, die am Ende genutzt werden sollen:
PATCH /data/v2/domain/Shutter/1/RequestAction {"Action":"LiftTo", "Percentage":100}
PATCH /data/v2/domain/Shutter/1/RequestAction {"Action":"Stop"}

Viell. kann mir ja jemand einen Anschub geben?!

VG+Danke
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: betateilchen am 15 Januar 2024, 20:08:58
Zitat von: fireball am 15 Januar 2024, 20:04:17JSONPath kann HTTPMOD nicht oder? Ich habe dafür das JsonMod-Modul gefunden, dass könnte das. zB $.Device um alle Device auszulesen?!

Ja, JsonMod ist für Dein Szenario sicher das besser geeignete Modul.
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 16 Januar 2024, 10:53:05
Hallo,

ich habe gerade einen Fall, wo der Rückgabewert im JSON einer signed int 16-Darstellung entspricht. Das macht die Ausgabe von negativen Zahlen schwierig, wo man ohne Formatierungsinformationen 65xxx anstatt der Darstellung mit Minuszeichen sieht. In ModbusAttr hat man für so etwas die Attribute mit dem Anhang -unpack, wo man S oder s angeben könnte, je nachdem ob MSB oder LSB codiert ist, und damit die korrekte Darstellung in fhem erreichen würde. Es ist vielleicht etwas ungewöhnlich, dass solche Dekodieranweisungen für Rohdaten für JSON-Telegramme benötigt werden, da man dort eher eine sprechende Darstellung erwartet, tatsächlich gibt es aber solche Geräte. Vermutlich haben es sich die Entwickler da einfach gemacht und den Rohwert, so wie er über Modbus ausgegeben wird, einfach ins JSON-Telegramm kopiert wird.

Meine Frage: Können wir so etwas wie unpack auch in httpmod anbieten? Oder wie würde man so einen Fall mit den bestehenden Mitteln lösen?
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 28 Januar 2024, 14:06:59
Ich hole mit HTTPMOD ein JSON-Array mit 16 Einträgen, sagen wir mit dem Attribut
readingXXJSON nrgAus den ersten vier Einträgen des Arrays erstelle ich dann gemeinsames Reading, in dem diese durch " - " Strings getrennt werden.

Erstaunlicherweise geht das mit dem Attribut
readingXXRecombineExpr sprintf "%.1f - %.1f - %.1f - %.1f",$matchlist[0],$matchlist[1],$matchlist[8],$matchlist[9]Ich habe eine Weile gebraucht, um das zu kapieren: Im Perl-Array @matchlist sind die Einträge des JSON-Array nicht in nummerischer, sondern in lexikalischer Sortierung gespeichert, also in der Reihenfolge

0-1-10-11-12-13-14-15-2-3-4-5-6-7-8-9.

Will man also auf dritten Eintrag des JSON-Arrays zugreifen (der hat ja den Index 2), muss das aus dem Perl-Array der Eintrag mit dem Index 8 sein.

Das kann man zwar alles machen, und die Sache funktioniert ja jetzt. Eine Änderung im Modul ist also nicht nötig, aber das sollte in der CommandRef vermerkt werden.

LG

pah
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Januar 2024, 14:40:51
Hallo pah,

vielen Dank für den Hinweis, ich habe es in der Doku vermerkt und checke es mit der nächsten Änderung ein.

Gruss
   Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 29 Januar 2024, 14:45:59
Zitat von: beaune am 16 Januar 2024, 10:53:05Meine Frage: Können wir so etwas wie unpack auch in httpmod anbieten? Oder wie würde man so einen Fall mit den bestehenden Mitteln lösen?

Hallo beaune, Du kannst in einer ReadingExpr auch pack / unpack aufrufen.
Sowas wie
unpack ("s", pack ('S', $val))

Packt den Wert erst als 16 bit unsigned und enpackt ihn dann als 16 Bit signed int.

Gruss
  Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 29 Januar 2024, 16:40:03
Zitat von: betateilchen am 15 Januar 2024, 20:08:58
Zitat von: fireball am 15 Januar 2024, 20:04:17JSONPath kann HTTPMOD nicht oder? Ich habe dafür das JsonMod-Modul gefunden, dass könnte das. zB $.Device um alle Device auszulesen?!

Ja, JsonMod ist für Dein Szenario sicher das besser geeignete Modul.



Hi,

ich bräuchte nochmal ein bisl Anschub...

Ich habe mir mit JsonMOD jetzt alle interessanten Werte aus meinem Jalousiehub rausgelesen.

Ich würde jetzt gern EIN HTTPMOD Device erzeugen, mit EINER setURL, die ich für alle Jalousien nehmen kann.
Die URL sehen wie oben beschrieben so aus:
PATCH /data/v2/domain/Shutter/1/RequestAction {"Action":"LiftTo", "Percentage":100}
PATCH /data/v2/domain/Shutter/1/RequestAction {"Action":"Stop"}

Bei mir muss die 1 immer durch den Wert der ensprechenden Jalousie ersetzt werden und im data-Feld muss ich 1-n Werte ersetzen können.

Ich würde dafür gern readingsProxys erstellen, pro Jalousie einen. Diesen kann ich mit div. readings aus dem JSONMOD anreichern.
Dann ein HTTPMOD mit der SetURL.
PATCH /data/v2/domain/Shutter/$$VALUE1$$/RequestAction {"Action":"$$VALUE3$$", "Percentage":$$VALUE3$$}Ich finde aktuell nur die Möglichkeit einen Wert zu übergeben, $val, aber es gibt doch bestimmt mit den replacements etc. auch die Möglichkeit mehrere Werte zu ersetzen?!
Dann sollten in setFn des readingsProxy nur die 3 Werte übergeben werden und die setURL führt dann die Befehle aus?!
Oder könnte man zB $$VALUE1$$ immer mit einem Wert des aufrufenden Device füllen?!

Irgendwie strauchle ich hier...
Ich wollte vermeiden, einfach 15 SetURLs anzulegen, wo ich $$VALUE1$$ schon fest definiert habe...
VG+Danke
René
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: beaune am 31 Januar 2024, 12:17:04
Zitat von: StefanStrobel am 29 Januar 2024, 14:45:59
Zitat von: beaune am 16 Januar 2024, 10:53:05Meine Frage: Können wir so etwas wie unpack auch in httpmod anbieten? Oder wie würde man so einen Fall mit den bestehenden Mitteln lösen?

Hallo beaune, Du kannst in einer ReadingExpr auch pack / unpack aufrufen.
Sowas wie
unpack ("s", pack ('S', $val))

Packt den Wert erst als 16 bit unsigned und enpackt ihn dann als 16 Bit signed int.

Gruss
  Stefan

Funktioniert wunderbar, vielen Dank für den Tipp!
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 31 Januar 2024, 14:00:31
Hi,

Bekommt man in httpmod, wenn man einen readingsproxy draufgesetz hat, auch das aufrufende device raus?

Vg und danke
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 31 Januar 2024, 14:54:55
Ich verstehe die Frage nicht - was ist mit "aufrufendem Device" gemeint?

LG

pah
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 31 Januar 2024, 16:55:55
Hi, meine readingsproxys gehen auf das httpmod.
Die readingsproxys, die ich einrichten möchte, stehen für eine jalousie. Der httpmod übernimmt die Kommunikation zum jalousiehub.
Eine setURL, um eine jalousie anzusprechen sieht so aus
PATCH /data/v2/domain/Shutter/$$VALUE1$$/RequestAction
Ich würde jetzt gern $$VALUE1$$ mit dem gleichen reading aus dem aufrufende readingsproxy dynamisch setzen...
Wahrscheinlich über ein replacement readings... Wobei das dann ungefähr so aussehen würde readingsval("readingsproxy", "devicenummer", "0")

Vg René
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 31 Januar 2024, 20:45:27
Aber _never_ mit $$name$$. Sinnvollerweise %%name%%

LG

pah
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 02 Februar 2024, 17:57:08
Zitat von: fireball am 29 Januar 2024, 16:40:03Ich finde aktuell nur die Möglichkeit einen Wert zu übergeben, $val, aber es gibt doch bestimmt mit den replacements etc. auch die Möglichkeit mehrere Werte zu ersetzen?!

siehe post #1284. Mit der neuen Version zum Testen sollte das einfacher gehen:
ZitatMit dem Attribut (get|set)[0-9]*(-[0-9]+)?ValueSeparator kann man ein Trennzeichen für set-Optionen definieren und dann in einem set mehrere Parameter übergeben, die dann mit $val1, $val2 etc. referenziert werden können.

Gruss
  Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 02 Februar 2024, 18:43:51
Vielen Dank für deine Mühe Stefan, ich werde das am Wochenende gleich mal ausprobieren.
VG René
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 04 Februar 2024, 18:59:38
Zitat von: StefanStrobel am 02 Februar 2024, 17:57:08siehe post #1284. Mit der neuen Version zum Testen sollte das einfacher gehen:

Hi Stefan, ich habe das mal ausprobiert, soweit funktioniert das ganz gut, anbei bei mal ein Log:
2024.02.04 18:57:00 5: WiserHub: set called with LiftTo 1,50
2024.02.04 18:57:00 5: WiserHub: set found option LiftTo in attribute set01Name
2024.02.04 18:57:00 4: WiserHub: set will now set LiftTo -> 1,50
2024.02.04 18:57:00 5: WiserHub: AddToQueue adds type set01 to URL http://192.168.178.112/data/v2/domain/Shutter/$val1/RequestAction, data {"Action":"LiftTo", "Percentage":$val2}, header Secret: %%WiserHub_Secret%%, retry 0, initial queue len: 0
2024.02.04 18:57:00 5: WiserHub: HandleSendQueue called from AddToSendQueue, qlen = 1
2024.02.04 18:57:00 5: WiserHub: HandleSendQueue - call with HTTP METHOD: PATCH
2024.02.04 18:57:00 5: WiserHub: Replace called for type set01, regex (?^:%%WiserHub_Secret%%), mode key, value WiserHub_Secret input: Secret: %%WiserHub_Secret%%
2024.02.04 18:57:00 5: WiserHub: ReadKeyValue tries to read value for WiserHub_Secret from file
2024.02.04 18:57:00 5: WiserHub: Replace: key WiserHub_Secret value is xxxxxxxxx
2024.02.04 18:57:00 5: WiserHub: Replace: match for type set01, regex (?^:%%WiserHub_Secret%%), mode key, value WiserHub_Secret, input: Secret: %%WiserHub_Secret%%, result is Secret: xxxxxxxxx
2024.02.04 18:57:00 5: WiserHub: Replace called for type set01, regex (?^:%%WiserHub_Secret%%), mode key, value WiserHub_Secret input: {"Action":"LiftTo", "Percentage":$val2}
2024.02.04 18:57:00 5: WiserHub: ReadKeyValue tries to read value for WiserHub_Secret from file
2024.02.04 18:57:00 5: WiserHub: Replace called for type set01, regex (?^:%%WiserHub_Secret%%), mode key, value WiserHub_Secret input: http://192.168.178.112/data/v2/domain/Shutter/$val1/RequestAction
2024.02.04 18:57:00 5: WiserHub: ReadKeyValue tries to read value for WiserHub_Secret from file
2024.02.04 18:57:00 5: WiserHub: found , as separator for multiple values (Context set01, 01)
2024.02.04 18:57:00 4: WiserHub: HandleSendQueue sends set01 with timeout 2 to http://192.168.178.112/data/v2/domain/Shutter/1/RequestAction,
data: {"Action":"LiftTo", "Percentage":50},
header: Secret:
2024.02.04 18:57:00 5: WiserHub: ReadCallback called from __ANON__
2024.02.04 18:57:00 4: WiserHub: Read callback: request type was set01 retry 0,
header: HTTP/1.1 200 OK
Content-Length: 2
Content-Type: application/json
Keep-Alive: timeout=5, max=5, body length 2
2024.02.04 18:57:00 5: WiserHub: Read callback: body
{}

Was mir aber aufgefallen ist, im FHEMWEB wird der Seperator unter Attributes nicht angezeigt, im list Device isser aber drin oder wenn man Attribut anklickt und bearbeiten möchte, dann isser auch da.

VG René

Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DocCyber am 12 März 2024, 13:17:34
Hallo zusammen.

ich würde gern einen Wert ändern und den geänderten Wert sofort danach mit ReadingsVal() abrufen können.
Dazu habe ich das entsprechende Reading, sowie ein passendes get und set (mit FollowGet) Kommando definiert.

Um das zu testen, gebe ich in der Kommandozeile ein:
{fhem("set goe current 12");; my $ret = ReadingsVal("goe", "current", "0");; return $ret;;}Für dieses Beispiel würde ich 12 als Rückgabewert erwarten, aber ich erhalte stets den alten, zuvor gesetzten Wert.



define goe HTTPMOD http://192.168.xxx.yy/status?filter=alw,amp,car,err,eto,nrg 600

attr goe get03Name current
attr goe get03URL http://192.168.178.33/status?filter=amp

attr goe reading03Name current
attr goe reading03JSON amp

attr goe set02Name current
attr goe set02FollowGet current
attr goe set02URL http://192.168.178.33/mqtt?payload=amp=$val

attr goe event-on-change-reading car,alw,amp,err,tmp,nrg_.*,eto,dws,wst,current
attr goe event-on-update-reading alw,car,amp,dws,nrg,current
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 12 März 2024, 15:40:37
Das wundert mich nicht. Schließlich muss zuerst der Wert im goe gesetzt werden, alleine das dauert seine Zeit. Und dann wurde der geänderte Wert noch lange nicht gelesen, dazu muss erst noch das mit set02FollowGet definierte "get current" ausgeführt werden.

Entweder in die Perl-Zeile eine Wartezeit einbauen, oder besser: Auf den geänderten Wert des Readings current triggern.

LG

pah
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: DocCyber am 12 März 2024, 18:20:29
Zitat von: Prof. Dr. Peter Henning am 12 März 2024, 15:40:37Entweder in die Perl-Zeile eine Wartezeit einbauen, oder besser: Auf den geänderten Wert des Readings current triggern.

Wartezeit habe ich schon versucht; möglicherweise ist 1 Sekunde zu kurz - obwohl das ja eigentlich schon eine Riesenzeitspanne darstellen sollte.

Triggern macht m.E. in einem laufenden Perlscript nicht viel Sinn - der Code läuft ja weiter.
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: cwagner am 20 März 2024, 23:11:39
Das Pollenflugbeispiel aus dem Wiki (hier) (https://wiki.fhem.de/wiki/Pollenflug) hatte ich seit langem im Einsatz. Nach dem Wechsel auf PI-OS (Debian) Bookworm wird das Device nicht (mehr) aktualisiert - kopiere ich es als RAW 1:1 auf einen Server mit PI-OS "Bullseye" funktioniert alles.

Auch die Variante Pollenflug von PA Henning habe ich vergeblich unter Bookworm versucht, zu installieren - auch hier wird anscheinend die Seite nicht aufgerufen und damit gibt es auch keine Ergebnisse nach dem Parsen.

Die Angaben mit verbose=5 helfen mir nicht:
2024.03.20 20:33:49 4: Pollenflug: GetUpdate called (update)
2024.03.20 20:33:49 4: Pollenflug: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 20:34:49.512, interval 60
2024.03.20 20:33:49 5: Pollenflug: AddToQueue adds type update to URL https://www.donnerwetter.de/pollenflug/osterholz-scharmbeck/DE22218.html, no data, header User-Agent: Mozilla/5.0 (Windows NT 6.0), retry 0, initial queue len: 0
2024.03.20 20:33:49 5: Pollenflug: HandleSendQueue called from AddToSendQueue, qlen = 1
2024.03.20 20:33:49 5: Pollenflug: no separator for multiple values (Context update, unknown)
2024.03.20 20:33:49 4: Pollenflug: HandleSendQueue sends update with timeout 2 to https://www.donnerwetter.de/pollenflug/osterholz-scharmbeck/DE22218.html, No Data,
header: User-Agent: Mozilla/5.0 (Windows NT 6.0)
2024.03.20 20:33:49 5: Pollenflug: ReadCallback called from __ANON__
2024.03.20 20:33:49 5: Pollenflug: Read callback Error LogLvl set to 3, regex
2024.03.20 20:33:49 3: Pollenflug: Read callback: Error: DNS: short DNS answer
2024.03.20 20:33:49 4: Pollenflug: Read callback: request type was update retry 0, no headers, no body
2024.03.20 20:33:49 5: Pollenflug: Read callback: body empty
2024.03.20 20:33:49 4: Pollenflug: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2024.03.20 20:33:49 5: Pollenflug: GetCookies is looking for Cookies
2024.03.20 20:33:49 5: Pollenflug: ExtractSid called, context reading, num unknown
2024.03.20 20:33:49 4: Pollenflug: no header to look for redirects
2024.03.20 20:33:49 5: Pollenflug: Read callback sets LAST_REQUEST to update
2024.03.20 20:33:49 5: Pollenflug: CheckAuth decided no authentication required
2024.03.20 20:34:00 5: Pollenflug: attr Pollenflug verbose

Das Intervall ist nur aus Testgründen auf die in diesem Fall unsinnigen 60 Sekunden festgelegt.

Hat jemand ähnliche Erfahrungen oder gar einen hilfreichen Vorschlag?

Christian
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: StefanStrobel am 21 März 2024, 08:00:29
Hallo Christian,

du kannst Die Zeile mit use Data::Dumper einfach auskommentieren.
Die Funktion war nur fürs Debugging nötig. Ich entferne sie in der nächsten Version.

Gruß
    Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 21 März 2024, 08:54:14
Zitat von: DocCyber am 12 März 2024, 18:20:29Triggern macht m.E. in einem laufenden Perlscript nicht viel Sinn - der Code läuft ja weiter.

Nicht doch. Die Abarbeitung sollte immer asynchron sein, also erst bei erfolgtem Update weiterlaufen.

Und "eine Sekunde" ist in einem Prozess, der eine asynchrone Aktion über ein Netzwerk beinhaltet, eben keine gar so große Zeitspanne.

LG

pah
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: cwagner am 21 März 2024, 11:22:39
[gelöst]
Zitat von: StefanStrobel am 21 März 2024, 08:00:29..
du kannst Die Zeile mit use Data::Dumper einfach auskommentieren.
Die Funktion war nur fürs Debugging nötig. Ich entferne sie in der nächsten Version.
...

Vielen Dank, Stefan, dass Du Dich meines Problems angenommen hast. Habe die Zeile auskommentiert, neu geladen, doch leider, wird immer noch nicht aktualisiert, auch in einem weiteren Device (mit PAHennings Ansatz)

2024.03.21 11:16:38 4: PM: GetUpdate called (update)
2024.03.21 11:16:38 4: PM: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 11:17:38.922, interval 60
2024.03.21 11:16:38 5: PM: AddToQueue adds type update to URL https://www.wetteronline.de/pollen?gid=10734&lat=49.42&locationname=Heidelberg&lon=8.70, no data, no headers, retry 0, initial queue len: 0
2024.03.21 11:16:38 5: PM: HandleSendQueue called from AddToSendQueue, qlen = 1
2024.03.21 11:16:38 5: PM: no separator for multiple values (Context update, unknown)
2024.03.21 11:16:38 4: PM: HandleSendQueue sends update with timeout 2 to https://www.wetteronline.de/pollen?gid=10734&lat=49.42&locationname=Heidelberg&lon=8.70, No Data, No Header
2024.03.21 11:16:38 5: PM: ReadCallback called from __ANON__
2024.03.21 11:16:38 5: PM: Read callback Error LogLvl set to 3, regex
2024.03.21 11:16:38 3: PM: Read callback: Error: DNS: short DNS answer
2024.03.21 11:16:38 4: PM: Read callback: request type was update retry 0, no headers, no body
2024.03.21 11:16:38 5: PM: Read callback: body empty
2024.03.21 11:16:38 4: PM: BodyDecode is not decoding the response body (charset not found, bodyDecode defaults to none)
2024.03.21 11:16:38 5: PM: GetCookies is looking for Cookies
2024.03.21 11:16:38 5: PM: ExtractSid called, context reading, num unknown
2024.03.21 11:16:38 4: PM: no header to look for redirects
2024.03.21 11:16:38 5: PM: Read callback sets LAST_REQUEST to update
2024.03.21 11:16:38 5: PM: CheckAuth decided no authentication required
2024.03.21 11:17:05 4: Pollenflug: GetUpdate called (update)
2024.03.21 11:17:05 4: Pollenflug: UpdateTimer called from GetUpdate with cmd next sets timer to call update function in 60.0 sec at 11:18:05.511, interval 60
2024.03.21 11:17:05 5: Pollenflug: AddToQueue adds type update to URL http://www.donnerwetter.de/pollenflug/berlin/DE14356.html, no data, header User-Agent: Mozilla/5.0 (Windows NT 6.0), retry 0, initial queue len: 0
2024.03.21 11:17:05 5: Pollenflug: HandleSendQueue called from AddToSendQueue, qlen = 1
2024.03.21 11:17:05 5: Pollenflug: no separator for multiple values (Context update, unknown)
2024.03.21 11:17:05 4: Pollenflug: HandleSendQueue sends update with timeout 2 to http://www.donnerwetter.de/pollenflug/berlin/DE14356.html, No Data,
header: User-Agent: Mozilla/5.0 (Windows NT 6.0)
2024.03.21 11:17:05 5: Pollenflug: ReadCallback called from __ANON__
2024.03.21 11:17:05 5: Pollenflug: Read callback Error LogLvl set to 3, regex
2024.03.21 11:17:05 3: Pollenflug: Read callback: Error: DNS: short DNS answer
2024.03.21 11:17:05 4: Pollenflug: Read callback: request type was update retry 0, no headers, no body
2024.03.21 11:17:05 5: Pollenflug: Read callback: body empty
2024.03.21 11:17:05 4: Pollenflug: BodyDecode is decoding the response body as utf8 but charset header is not found
2024.03.21 11:17:05 5: Pollenflug: GetCookies is looking for Cookies
2024.03.21 11:17:05 5: Pollenflug: ExtractSid called, context reading, num unknown
2024.03.21 11:17:05 4: Pollenflug: no header to look for redirects
2024.03.21 11:17:05 5: Pollenflug: Read callback sets LAST_REQUEST to update
2024.03.21 11:17:05 5: Pollenflug: CheckAuth decided no authentication required

Edit: Das Problem hatte nichts mit den Updates zu tun, sondern lag an einem bei Systemumzug mitgeschleiften fehlerhaften DNS-Eintrag im Device Global

Christian
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: fireball am 21 März 2024, 19:37:32
Zitat von: StefanStrobel am 02 Februar 2024, 17:57:08
Zitat von: fireball am 29 Januar 2024, 16:40:03Ich finde aktuell nur die Möglichkeit einen Wert zu übergeben, $val, aber es gibt doch bestimmt mit den replacements etc. auch die Möglichkeit mehrere Werte zu ersetzen?!

siehe post #1284. Mit der neuen Version zum Testen sollte das einfacher gehen:
ZitatMit dem Attribut (get|set)[0-9]*(-[0-9]+)?ValueSeparator kann man ein Trennzeichen für set-Optionen definieren und dann in einem set mehrere Parameter übergeben, die dann mit $val1, $val2 etc. referenziert werden können.

Hi Stefan, ist die Änderung jetzt schon im offziellen Modul drin?
VG+Danke
René

Gruss
  Stefan
Titel: Aw: Neue Version von HTTPMOD mit neuen Features zum Testen
Beitrag von: Prof. Dr. Peter Henning am 22 März 2024, 04:34:31
Eine Bitte an alle: Nicht immer den bequemen Button "Zitieren" verwenden, das müllt das ganze Forum zu. Der Button "Antworten" ist OBEN.

LG

pah