Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

StefanStrobel

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

voller

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




StefanStrobel

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

voller

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

StefanStrobel

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

voller

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 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

SirUli

#36
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

StefanStrobel

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

SirUli

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

StefanStrobel

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

StefanStrobel

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




zurli

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

StefanStrobel

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

StefanStrobel

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

zurli

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