HTTPMOD / DUMMY Device / notify

Begonnen von fireball, 15 Dezember 2019, 14:48:15

Vorheriges Thema - Nächstes Thema

fireball

Hallo Freunde,

ich steh jetzt seit Stunden auf dem Schlauch und komme ich nicht mehr weiter... ich seh schon den Wald vor lauter Bäumen nicht mehr.

Ich habe es geschafft meinen Jalousiesteuerungshub per curl / http-get / http-post auszuslesen und entsprechend auch die Jalousien zu schalten.

Nun war meine Idee, ich möchte gern Schalter in FHEM pro Jalousie / pro Raum / pro Etage / Haus.
Die HTTP Post Befehle zum Schalten habe ich.
Natürlich würde ich gern auch den Status auslesen und entsprechend am DummySchalter das Icon setzen etc.

Anfangs dachte ich mir, dass mach ich mit DummySchaltern in Kombination mit einem notify.
Die URLs sind ja sehr Statisch, es kommen ja nicht auf einmal neue Schalter hinzu.

Dann wollte ich das alles irgendwie dynamischer machen... warum weiß ich gar nicht mehr.
Jedenfalls habe ich mich gerade sehr tief in HTTPMOD verloren und habe PRobleme mit dem auslesen des empfangenem JSON.

Ich wollte jetzt die Szenen / einzelnen Jalousien aus dem Hub auslesen, die Szenen bekomme ich die Jalousien nicht.
Welche RegExp oder JSON muss ich anwenden damit ich nur die wlss[Zahl] rausbekomme? Das sind die einzelnen Schalter



{
    "n": "Wiser One Gateway",
    "rt": [
        "oic.wk.res"
    ],
    "if": [
        "oic.if.baseline"
    ],
    "links": [
        {
            "rt": [
                "oic.wk.p"
            ],
            "href": "/oic/p",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.d"
            ],
            "href": "/oic/d",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.con"
            ],
            "href": "/oic/con",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.mnt"
            ],
            "href": "/oic/mnt",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.dateTime"
            ],
            "href": "/dateTime",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.localization"
            ],
            "href": "/localization",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.wifiNet"
            ],
            "href": "/wlan0",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.wifiNet"
            ],
            "href": "/wlan1",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.wifiScan"
            ],
            "href": "/wifiScan",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.wifiAp"
            ],
            "href": "/accessPoint",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.cloudConnector"
            ],
            "href": "/azureConnector",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.accountPairing"
            ],
            "href": "/accountPairing",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.hmi"
            ],
            "href": "/hmi",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "wiserone.r.licensing"
            ],
            "href": "/licensing",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.scenelist"
            ],
            "href": "/sceneList",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.scenecollection",
                "wiserone.scene.collection.basic"
            ],
            "href": "/sceneCollection/0",
            "if": [
                "oic.if.b",
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.wk.scenecollection"
            ],
            "href": "/sceneCollection/1",
            "if": [
                "oic.if.b",
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss31",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/31",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss32",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/32",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss37",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/37",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss39",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/39",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss42",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/42",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss44",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/44",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss47",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/47",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss49",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/49",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss51",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/51",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss68",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/68",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss70",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/70",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss97",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/97",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss99",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/99",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.openlevel",
                "oic.wk.con",
                "wiserone.d.wlss",
                "wiserone.p.zigbee",
                "wiserone.r.window.cover"
            ],
            "href": "/wlss102",
            "if": [
                "oic.if.a"
            ]
        },
        {
            "rt": [
                "oic.wk.scenemember"
            ],
            "href": "/sceneMember/102",
            "if": [
                "oic.if.baseline"
            ]
        },
        {
            "rt": [
                "oic.r.pushconfiguration"
            ],
            "if": [
                "oic.if.b",
                "oic.if.baseline"
            ],
            "href": "/pushNotificationConfig"
        },
        {
            "rt": [
                "wiserone.r.zigbeeNet"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "href": "/zan0"
        },
        {
            "rt": [
                "wiserone.r.availableFirmware"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "href": "/availableFirmware"
        }
    ]
}



Dann habe ich noch eine andere URL die ich auslesen möchte, da seh ich den Status der Jalousien (im openLevel Block => "openLevel": 100 ist auf  "openLevel": 0 ist zu)
Weiterhin kann ich da auch die Namen der Jalousien auslesen und in welchem Raum diese sind:  "n": "Rollladen 2",  "wiserone.room": "17_0".


    {
        "href": "/wlss31/openLevel",
        "rep": {
            "rt": [
                "oic.r.openlevel"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "range": [
                0,
                100
            ],
            "step": 1,
            "openLevel": 100
        }
    },
    {
        "href": "/wlss31/oic/con",
        "rep": {
            "rt": [
                "oic.wk.con"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "n": "Rollladen 2",
            "wiserone.room": "17_0"
        }
    },
    {
        "href": "/wlss31/shutter/1",
        "rep": {
            "rt": [
                "wiserone.r.window.cover"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "action": 0
        }
    },
    {
        "href": "/wlss32/openLevel",
        "rep": {
            "rt": [
                "oic.r.openlevel"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "range": [
                0,
                100
            ],
            "step": 1,
            "openLevel": 100
        }
    }
[code]




So nun wäre meine Frage, wie kann ich alle diese Informationen zu den einzelnen Schaltern aus den div. Blöcken auslesen und wie sollte ich das angehen, dass wenn ich die DummySchalter bediene die HTTP-POSTs gesendet werden?!
Über notifys direkt? oder über den HTTPMOD?
VG Danke
René

xenos1984

Statt dummy + notify würde ich readingsProxy für die einzelnen Jalousien benutzen:

http://wiki.fhem.de/wiki/ReadingsProxy

Und um herauszufinden, wie die JSON-Pfade lauten müssen, würde ich das Attribut extractAllJSON des HTTPMOD auf 1 oder 2 setzen:

http://fhem.de/commandref.html#HTTPMODattr

ch.eick

Hallo.

Beim Httpmod kannst Du mehrere geht und put definieren, Die Du dann individuell ansteuern kannst.

So hatte ich mal eine Vallox KWL angesteuert.
Es gab set Befehle für die einzelnen Profile.
So war alles in einem httpmod device definiert .

Gruß Christian

Gesendet von meinem SM-G930F mit Tapatalk

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

fireball

hi,

Xenos.. also wenn ich alle JSON Bausteine extrahieren lassen, dann sieht das quais so aus:

/wlss37

2019-12-15 14:19:10
links_22_if_0

oic.if.a

2019-12-15 14:19:10
links_22_rt_0

oic.r.openlevel

2019-12-15 14:19:10
links_22_rt_1

oic.wk.con

2019-12-15 14:19:10
links_22_rt_2

wiserone.d.wlss

2019-12-15 14:19:10
links_22_rt_3

wiserone.p.zigbee

2019-12-15 14:19:10
links_22_rt_4

wiserone.r.window.cover

2019-12-15 14:19:10
links_23_href

/sceneMember/37

2019-12-15 14:19:10
links_23_if_0

oic.if.baseline

2019-12-15 14:19:10
links_23_rt_0

oic.wk.scenemember

2019-12-15 14:19:10
links_24_href

/wlss39

2019-12-15 14:19:10
links_24_if_0

oic.if.a

2019-12-15 14:19:10
links_24_rt_0

oic.r.openlevel

2019-12-15 14:19:10
links_24_rt_1

oic.wk.con

2019-12-15 14:19:10
links_24_rt_2

wiserone.d.wlss

2019-12-15 14:19:10
links_24_rt_3

wiserone.p.zigbee

2019-12-15 14:19:10
links_24_rt_4

wiserone.r.window.cover

2019-12-15 14:19:10
links_25_href

/sceneMember/39

2019-12-15 14:19:10
links_25_if_0

oic.if.baseline

2019-12-15 14:19:10
links_25_rt_0

oic.wk.scenemember

2019-12-15 14:19:10
links_26_href

/wlss42

2019-12-15 14:19:10
links_26_if_0

oic.if.a

2019-12-15 14:19:10
links_26_rt_0

oic.r.openlevel

2019-12-15 14:19:10
links_26_rt_1

oic.wk.con

2019-12-15 14:19:10
links_26_rt_2

wiserone.d.wlss

2019-12-15 14:19:10
links_26_rt_3

wiserone.p.zigbee

2019-12-15 14:19:10
links_26_rt_4

wiserone.r.window.cover

2019-12-15 14:19:10
links_27_href

/sceneMember/42

2019-12-15 14:19:10
links_27_if_0

oic.if.baseline

2019-12-15 14:19:10
links_27_rt_0

oic.wk.scenemember

2019-12-15 14:19:10
links_28_href

/wlss44

2019-12-15 14:19:10
links_28_if_0

oic.if.a

2019-12-15 14:19:10
links_28_rt_0

oic.r.openlevel

2019-12-15 14:19:10
links_28_rt_1

oic.wk.con

2019-12-15 14:19:10
links_28_rt_2

wiserone.d.wlss

2019-12-15 14:19:10
links_28_rt_3

wiserone.p.zigbee


ich will aber nur die /wlssXXX haben.

Dabei muss man sehen, dass links_href auch andere werte haben kann => /sceneMember/37 ich habe schon mit getRegex gespielt, bekomme es aber nicht hin, auf speziellen Regex SEiten haben ich aber einige RegEx herausgefunden, die gehen müssten: /wlss[0-9]*

Ist halt sehr komisch...

Kann man eigentlich mehrere Werte aus dem JSON Response in einen getName schreiben lassen???
Das würde mir die Verarbeitung erleichtern.

VG

xenos1984

Um nur einzelne JSON Elemente zu extrahieren, setzt du extractAllJSON wieder auf 0 (bzw. entfernst es, weil 0 die Voreinstellung ist) und gehst vor wie hier beschrieben:

http://fhem.de/commandref.html#HTTPMODjsonconfiguration

Als readingXXJSON (wobei XX eine Durchnumerierung ist) setzt du dann die JSON-Pfade, die du jetzt als Namen der Readings herausbekommen hast.

fireball

Moinsen,

ich komme hier nicht weiter,  bzw versteh es einfach nicht und jetzt sind auch zuviele Ideen im Raum.
Das ist mein HTTPMOD:

Internals:
   BUSY       0
   CHANGED   
   DEF        none 0
   FUUID      5df8c7b2-f33f-0804-0b59-e50a21052479b620
   Interval   0
   JSONEnabled 1
   LASTSEND   1576587769.98605
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       HomeTouch
   NOTIFYDEV  global
   NR         462
   NTFY_ORDER 50-HomeTouch
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://192.168.178.128:80
   auth       0
   buf       
   code       500
   compress   1
   conn       
   data       {"action" : 0}
   displayurl http://192.168.178.128/ocf/02/shutter/1
   header     
   host       192.168.178.128
   httpheader HTTP/1.1 500 Internal Server Error
Server: nginx/1.11.5
Date: Tue, 17 Dec 2019 13:02:50 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: close
   httpversion 1.1
   hu_blocking 0
   hu_filecount 34
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /ocf/02/shutter/1
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.128/ocf/02/shutter/1
   value      0
   QUEUE:
   READINGS:
     2019-12-17 13:25:15   Taster          /wlss31 /wlss32 /wlss37 /wlss39 /wlss42 /wlss44 /wlss47 /wlss49 /wlss51 /wlss68 /wlss70 /wlss97 /wlss99 /wlss102
     2019-12-17 13:25:13   globaleSzenen   Home Away Sleep
     2019-12-17 13:25:14   lokaleSzenen    Buero_up WZ_up SZ_up KZ_down GZ_up SZ_down GZ_down Buero_down WZ_down Bad_OG_up Bad_OG_down KZ_up
   REQUEST:
     data       {"action" : $val}
     header     
     ignoreredirects 0
     retryCount 0
     type       set03
     url        http://192.168.178.128/ocf/$val2/shutter/1
     value      0
   sslargs:
Attributes:
   enableControlSet 1
   get01JSON  sceneValues
   get01Name  globaleSzenen
   get01Poll  1
   get01RecombineExpr join " ", @matchlist
   get01URL   http://192.168.178.128/ocf/sceneCollection/0
   get02JSON  sceneValues
   get02Name  lokaleSzenen
   get02Poll  1
   get02RecombineExpr join " ", @matchlist
   get02URL   http://192.168.178.128/ocf/sceneCollection/1
   get03Name  Taster
   get03Poll  1
   get03RecombineExpr join " ", @matchlist
   get03RegOpt g
   get03Regex \/wlss[0-9]*
   get03URL   http://192.168.178.128/ocf/oic/res
   httpVersion 1.1
   room       Wiser
   set01Data  {"isIrrelevant": false,"lastScene": "$val"}
   set01Hint  x,y,z
   set01Name  globaleSzenen
   set01URL   http://192.168.178.128/ocf/sceneCollection/0
   set02Data  {"isIrrelevant": false,"lastScene": "$val"}
   set02Hint  x,y,z
   set02Name  lokaleSzenen
   set02URL   http://192.168.178.128/ocf/sceneCollection/1
   set03Data  {"action" : $val}
   set03Hint  0,1,2
   set03Name  Taster
   set03URL   http://192.168.178.128/ocf/$val2/shutter/1
   userattr   get01JSON get01Name get01Poll:0,1 get01RecombineExpr get01URL get02JSON get02Name get02Poll:0,1 get02RecombineExpr get02URL get03Name get03Poll:0,1 get03RecombineExpr get03RegOpt get03Regex get03URL set01Data set01Hint set01Name set01URL set02Data set02Hint set02Name set02URL set03Data set03Hint set03IMap set03Name set03URL
   verbose    5



In den Readings die ich jetzt habe, habe ich die
Die Szenen die ich auslösen kann und die auch immer schon einer Funktion entsprechen, also BAD_up ist alle Jalousien im Bad hochfahren, AWAY ist das ganz Haus verriegeln und
ich habe die einzelnen Taster, die ich in einer URL ersetzen muss
http://192.168.178.128/ocf/$val2/shutter/1 und dann noch einen Parameter für auf/zu/stop (0,1,2) mitgeben muss im POST Request.


Ich würde jetzt gern in FHEM "Schalter" haben die für jeden einzelnen Taster etwas steuern können und ein/zwei Taster, die die Szenen Steuern (wahrscheinlich 2, da unterschiedliche URLs angesprochen werden)

Also wenn ich das über einen globalen Taster-Schalter realisieren will, dann müsste ich aus einer setList den Schalter wlssXXX auswählen und das Kommando auf/zu/stop.
Nachteil, ich habe keinen STatus für alle Taster.

Wenn ich viele einzelne Taster mache, dann kann ich bestimmt den Status aus dem Json auslesen und der Wert (wlssXXX) ist fest und ich muss nur entscheiden über setList (aus/zu/stop)

Bei den Szenen, steht jeder Name schon für das Kommando, daher wäre da nur die Übertragung der Szene an die Url notwendig.


Also bei bei einem globalen Dummy (Taster-Schalter) würde ich gern in setList das Reading aus dem HTTPMOD mit der Liste der Taster haben. Ich krieg das aber nicht in setList rein :(

Mit ReadingsProxy komme ich gar nicht klar... ich versteh einfach die Erklärung nicht...
Hab jetzt schon X-Bsp. gelesen, es macht nicht klick.

VG+Danke
René

fireball

Noch eine Frage zur Auswertung, ich habe ja jetzt die Möglichkeit gefunden ein paar Werte mit HTTPMOD zu herauszufiltern.

Kann man aber auch folgendes mit HTTPMOD machen oder wie wäre das möglich... ich beiß mir die Zähne aus:

{
        "href": "/wlss31/openLevel",
        "rep": {
            "rt": [
                "oic.r.openlevel"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "range": [
                0,
                100
            ],
            "step": 1,
            "openLevel": 100
        }
    },
    {
        "href": "/wlss31/oic/con",
        "rep": {
            "rt": [
                "oic.wk.con"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "n": "Rollladen 2",
            "wiserone.room": "17_0"
        }
    },
    {
        "href": "/wlss31/shutter/1",
        "rep": {
            "rt": [
                "wiserone.r.window.cover"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "action": 1
        }
    },
    {
        "href": "/wlss32/openLevel",
        "rep": {
            "rt": [
                "oic.r.openlevel"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "range": [
                0,
                100
            ],
            "step": 1,
            "openLevel": 100
        }
    },
    {
        "href": "/wlss32/oic/con",
        "rep": {
            "rt": [
                "oic.wk.con"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "n": "Kueche",
            "wiserone.room": "17_0"
        }
    },
    {
        "href": "/wlss32/shutter/1",
        "rep": {
            "rt": [
                "wiserone.r.window.cover"
            ],
            "if": [
                "oic.if.baseline"
            ],
            "action": 1
        }
    },


Das sind zwei der vielen Jalousieschalter bei mir.
Wie kann ich die den Auswerten, sodass ich für einen Schalter zB /wlss31 folgende Werte alle bekommen:

            "openLevel": 100
            "n": "Kueche",
            "wiserone.room": "17_0"

geht das überhaupt mit Regulären ausdrücken?
Brauch ich dafür etwas anderes? Ich habe ja schon den Namen /wlssXXX diesen würde ich jetzt benutzen wollen um weitere Infomationen zu bekommen.

Im Prinzip ist der Name   wlssXXX
und die Attribute:
            "openLevel": 100
            "n": "Kueche",
            "wiserone.room": "17_0"
das Device, welches ich aktuell halten möchte und welches ich schalten möchte, die ein STück der URL ist ja auch darin enthalten         "href": "/wlssXXX/shutter/1",


VG
REné

amenomade

Setze mal extractAllJSON auf 1, gucke wie es aussieht, und dann lösche extractAllJSON und setze einzelne readingXXJSON attribute
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

fireball

#8
Hi,

habe ich schon alles gemacht, mit extractAllJSON bekomme alles. Das sieht dann wie im Screenshot aus.
Mit get01Regex \/wlss[0-9]*  bekomme ich die Namen der Taster.

Aber mit get01JSON rep_openLevel bekomme ich nix.... Laut WIKI sollte man so die Verschachtelung in Griff bekommen und den Wert auslesen können.
https://wiki.fhem.de/wiki/HTTPMOD#Parsing_JSON

Ich versteh es nicht... oder geht hier get01JSON nicht und ich brauch readingXXJSON ??
VG
René


amenomade

get.... oder reading.... ist nur eine Frage, wie Du die Werte abfragen möchtest: entw. explizit mit get Kommando, oder automatich regelmässig
get... mit get...Poll ist gleich wie reading..., aber Du hast die Möglichkeit dazu, einzelne get Kommandos auszuführen.

Jetzt zeig mal bitte ein "list HomeTouch" mit gesetztem extractAllJSON
Hier https://forum.fhem.de/index.php/topic,106361.msg1002730.html#msg1002730 war es nicht gesetzt,
und hier https://forum.fhem.de/index.php/topic,106361.msg1002183.html#msg1002183 sieht man keine Küche mit Wert 100
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

fireball

Hi amenomade,

im letzten Post ist ein Screenshot, den hatte ich vergessen, da sieht man einen Teil von extractAllJSON

Ich bin jetzt einen Schritt weiter und habe auf get03Regex umgestellt.
Ich habe jetzt hier https://regex101.com/ solange mit der Response vom Request Reguläre Ausdrücke durchprobiert, bis die "Values" rauskommen.

Fage, gibts überhaupt VALUES bei RegEx?? Ich meine ich suche doch immer einen Match... Das get01JSON  macht den Eindruck, dass man nach "Values" suchen kann.

Nun gut, hier mein list vom HomeTouch2... und komischerweise funktionieren jetzt aber nur noch einer von 3 RegEx... obowhl alle wunderbar in der Seite funktionieren.


Internals:
   BUSY       0
   DEF        none 0
   FUUID      5df8f058-f33f-0804-bc44-71e85495d49391cd
   Interval   0
   LASTSEND   1576615102.21429
   MainURL   
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       HomeTouch2
   NOTIFYDEV  global
   NR         466
   NTFY_ORDER 50-HomeTouch2
   STATE      ???
   TRIGGERTIME 0
   TRIGGERTIME_FMT
   TYPE       HTTPMOD
   addr       http://192.168.178.128:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.128/ocf/deviceStatus
   header     Content-Type: application/json
   host       192.168.178.128
   httpheader HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Tue, 17 Dec 2019 20:38:22 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 0
   loglevel   4
   path       /ocf/deviceStatus
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.128/ocf/deviceStatus
   value      0
   QUEUE:
   READINGS:
     2019-12-17 21:38:22   Name_Taster     Rollladen 2", "wiserone.room": "17_0" } }, { "href": "\/wlss31\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss32\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss32\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Kueche", "wiserone.room": "17_0" } }, { "href": "\/wlss32\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss37\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss37\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "17_0" } }, { "href": "\/wlss37\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss39\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss39\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen", "wiserone.room": "04_Bad Unten" } }, { "href": "\/wlss39\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss42\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss42\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "23_Buero" } }, { "href": "\/wlss42\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss44\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss44\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "23_0" } }, { "href": "\/wlss44\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss47\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss47\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "06_0" } }, { "href": "\/wlss47\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss49\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss49\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "06_0" } }, { "href": "\/wlss49\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss51\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss51\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "09_Kinderzimmer Sw" } }, { "href": "\/wlss51\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss68\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss68\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "09_Kinderzimmer Wi" } }, { "href": "\/wlss68\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss70\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss70\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "09_Kinderzimmer Wi" } }, { "href": "\/wlss70\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss97\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss97\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Terrasse", "wiserone.room": "17_0" } }, { "href": "\/wlss97\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss99\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss99\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "09_Kinderzimmer Sw" } }, { "href": "\/wlss99\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss102\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss102\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen", "wiserone.room": "04_Bad Oben" } }, { "href": "\/wlss102\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action
     2019-12-17 21:35:52   OL_Taster-1     0
     2019-12-17 21:35:52   OL_Taster-10    0
     2019-12-17 21:35:52   OL_Taster-11    0
     2019-12-17 21:35:52   OL_Taster-12    0
     2019-12-17 21:35:52   OL_Taster-13    0
     2019-12-17 21:35:52   OL_Taster-14    0
     2019-12-17 21:35:52   OL_Taster-2     0
     2019-12-17 21:35:52   OL_Taster-3     0
     2019-12-17 21:35:52   OL_Taster-4     0
     2019-12-17 21:35:52   OL_Taster-5     0
     2019-12-17 21:35:52   OL_Taster-6     0
     2019-12-17 21:35:52   OL_Taster-7     0
     2019-12-17 21:35:52   OL_Taster-8     0
     2019-12-17 21:35:52   OL_Taster-9     0
     2019-12-17 21:35:52   WR_Taster       17_0" } }, { "href": "\/wlss31\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss32\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss32\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Kueche", "wiserone.room": "17_0" } }, { "href": "\/wlss32\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss37\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss37\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "17_0" } }, { "href": "\/wlss37\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss39\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss39\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen", "wiserone.room": "04_Bad Unten" } }, { "href": "\/wlss39\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss42\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss42\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "23_Buero" } }, { "href": "\/wlss42\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss44\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss44\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "23_0" } }, { "href": "\/wlss44\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss47\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss47\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "06_0" } }, { "href": "\/wlss47\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss49\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss49\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "06_0" } }, { "href": "\/wlss49\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss51\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss51\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "09_Kinderzimmer Sw" } }, { "href": "\/wlss51\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss68\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss68\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 1", "wiserone.room": "09_Kinderzimmer Wi" } }, { "href": "\/wlss68\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss70\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss70\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "09_Kinderzimmer Wi" } }, { "href": "\/wlss70\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss97\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss97\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Terrasse", "wiserone.room": "17_0" } }, { "href": "\/wlss97\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss99\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss99\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen 2", "wiserone.room": "09_Kinderzimmer Sw" } }, { "href": "\/wlss99\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action": 1 } }, { "href": "\/wlss102\/openLevel", "rep": { "rt": [ "oic.r.openlevel" ], "if": [ "oic.if.baseline" ], "range": [ 0, 100 ], "step": 1, "openLevel": 0 } }, { "href": "\/wlss102\/oic\/con", "rep": { "rt": [ "oic.wk.con" ], "if": [ "oic.if.baseline" ], "n": "Rollladen", "wiserone.room": "04_Bad Oben" } }, { "href": "\/wlss102\/shutter\/1", "rep": { "rt": [ "wiserone.r.window.cover" ], "if": [ "oic.if.baseline" ], "action
   REQUEST:
     data       
     header     Content-Type: application/json
     ignoreredirects 0
     retryCount 0
     type       get04
     url        http://192.168.178.128/ocf/deviceStatus
     value      0
   defptr:
     readingBase:
       Name_Taster get
     readingNum:
       Name_Taster 04
     readingOutdated:
     requestReadings:
       get04:
         Name_Taster get 04
   sslargs:
Attributes:
   enableControlSet 1
   get01Name  W_Taster
   get01RegOpt g
   get01Regex "href":[ \t]+"\/(.*\d)"
   get02Name  OL_Taster
   get02RegOpt g
   get02Regex "openLevel":[ \t]+([\d\.]+)
   get03Name  WR_Taster
   get03RegOpt g
   get03Regex "wiserone.room":[ \t]+"([\d]*_.+)"
   get04Name  Name_Taster
   get04RegOpt g
   get04Regex "n":[ \t]+"(.*)"
   getHeader1 Content-Type: application/json
   getPoll    1
   getURL     http://192.168.178.128/ocf/deviceStatus
   httpVersion 1.1
   room       Wiser
   userattr   get01JSON get01Name get01Poll:0,1 get01RecombineExpr get01RegOpt get01Regex get01URL get02ExtractAllJSON:0,1,2 get02JSON get02Name get02Poll:0,1 get02RecombineExpr get02RegOpt get02Regex get02URL get03Name get03Poll:0,1 get03RecombineExpr get03RegOpt get03Regex get03URL get04Name get04RegOpt get04Regex getHeader1 getPoll:0,1 getURL set01Data set01Hint set01Name set01URL set02Data set02Hint set02Name set02URL set03Data set03Hint set03IMap set03Name set03URL
   verbose    5



Kann man mehrere RegEx in einem Wert speichern? Sodass ich alle Infos zu einer Jalousie zusammenbekomme?
Ich glaube nicht... ich hoffe jetzt das die Nummern von W_Taster, OL_Taster, WR_Taster und Name_Taster immer zusammenpassen und das ich diese dann immer anhand der Nr weiterverarbeiten kann.

VG
René

amenomade

Attributes:
   enableControlSet 1
   get01Name  W_Taster
   get01RegOpt g
   get01Regex "href":[ \t]+"\/(.*\d)"
   get02Name  OL_Taster
   get02RegOpt g
   get02Regex "openLevel":[ \t]+([\d\.]+)
   get03Name  WR_Taster
   get03RegOpt g
   get03Regex "wiserone.room":[ \t]+"([\d]*_.+)"
   get04Name  Name_Taster
   get04RegOpt g
   get04Regex "n":[ \t]+"(.*)"
   getHeader1 Content-Type: application/json
   getPoll    1
   getURL     http://192.168.178.128/ocf/deviceStatus
   httpVersion 1.1
   room       Wiser
   userattr   get01JSON get01Name get01Poll:0,1 get01RecombineExpr get01RegOpt get01Regex get01URL get02ExtractAllJSON:0,1,2 get02JSON get02Name get02Poll:0,1 get02RecombineExpr get02RegOpt get02Regex get02URL get03Name get03Poll:0,1 get03RecombineExpr get03RegOpt get03Regex get03URL get04Name get04RegOpt get04Regex getHeader1 getPoll:0,1 getURL set01Data set01Hint set01Name set01URL set02Data set02Hint set02Name set02URL set03Data set03Hint set03IMap set03Name set03URL
   verbose    5

Da ist immer noch kein extractAllJSON zu sehen...

Laut Screenshot sollte
get04JSON Wlss31OpenLevel
get04JSON 01_rep_openLevel
ein Reading Wlss31OpenLevel mit Wert 100 zurückliefern

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

fireball

hi amenomade,

du meinst bestimmt das hier oder?
get04Name Wlss31OpenLevel
get04JSON 01_rep_openLevel


Ja, so wäre sicherlich eine zuordnung möglich.

Die Nummern, am Anfang jedes Readings wurden aber durch extractAllJSON autoamtisch angelegt, so wie jeder "Treffer" in Verbindung mit    get04RegOpt g ja automatisch zu
vielen Taster-XX führt, jenachdem wieviel Treffer kommen.

Ich versteh die Doku aber so, dass

get04JSON rep_openLevel alle verschachtelten Ergebnisse geben müssen und es kommt nichts...

VG
René

amenomade

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

fireball

Hi amenomade,

Danke für dein Feedback, ich habe jetzt mehrere Stunden noch versucht mit Regex alles hinzubekommen.  Läuft jetzt alles.
Mit dem Extract-Json isses besser, da ich glaube, es ist stabiler gegen Änderungen aber ein Problem hab ich noch:

Orginal:         "href": "/wlss102/shutter/1",

Das ist die Auswertung der Response:

Taster_WiserLink-4  = \/wlss102\/shutter\/1

Wie kann man in der Response die \, abstellen? Wieso kommen die überhaupt?

Regex für die Suche ist :     "href":[ \t]+"(.[\S]+.[\S]+.\d)"


VG
René