FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: fireball am 15 Dezember 2019, 14:48:15

Titel: HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 15 Dezember 2019, 14:48:15
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 15 Dezember 2019, 16:21:43
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
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: ch.eick am 15 Dezember 2019, 16:46:53
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

Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 15 Dezember 2019, 18:12:29
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
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 15 Dezember 2019, 18:38:35
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.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 17 Dezember 2019, 14:17:35
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 17 Dezember 2019, 16:55:10
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: amenomade am 17 Dezember 2019, 19:38:57
Setze mal extractAllJSON auf 1, gucke wie es aussieht, und dann lösche extractAllJSON und setze einzelne readingXXJSON attribute
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 17 Dezember 2019, 20:20:58
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é

Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: amenomade am 17 Dezember 2019, 21:43:28
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
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 17 Dezember 2019, 21:58:26
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: amenomade am 17 Dezember 2019, 22:04:12
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

Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 18 Dezember 2019, 08:53:05
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: amenomade am 18 Dezember 2019, 13:21:53
Ne dann .*rep_openLevel
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 18 Dezember 2019, 14:08:11
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é
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: amenomade am 18 Dezember 2019, 14:35:26
Wieso kommen die überhaupt? Weil deine Regex die auch fängt
.[\S]+.[\S]+.\d
Zitat von: CommandRef(get|reading)[0-9]*OExpr
defines an optional expression that is used in an eval to compute / format a readings value after parsing an HTTP response
The raw value from the parsing will be in the variable $val.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 01 Januar 2020, 17:51:09
Hallo Freunde,

ich bin aktuell mit meinem Ergebiss ziemlich zufrieden, aber eine Sache stört mich noch und das ist leider wirklich leicht zu erklären..


HTTPMOD:
Internals:
   BUSY       0
   DEF        none 0
   FUUID      5df9ff86-f33f-0804-1db2-f03fb7efb573da15
   Interval   300
   JSONEnabled 1
   LASTSEND   1577896756.52013
   MainURL   
   MaxAgeEnabled 1
   ModuleVersion 3.5.19 - 29.11.2019
   NAME       HomeTouch
   NOTIFYDEV  global
   NR         451
   NTFY_ORDER 50-HomeTouch
   STATE      ???
   STILLDONETIME 0
   TRIGGERTIME 1577897046.00526
   TRIGGERTIME_FMT 2020-01-01 17:44:06
   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/sceneCollection/1
   header     Content-Type: application/json
   host       192.168.178.128
   httpheader HTTP/1.1 200 OK
Server: nginx/1.11.5
Date: Wed, 01 Jan 2020 16:39:16 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 3
   hu_port    80
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /ocf/sceneCollection/1
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.128/ocf/sceneCollection/1
   value      0
   CompiledRegexes:
   QUEUE:
   READINGS:
     2020-01-01 17:24:07   Taster_OpenLevel-1 0
     2020-01-01 17:24:07   Taster_OpenLevel-10 0
     2020-01-01 17:24:07   Taster_OpenLevel-11 0
     2020-01-01 17:24:07   Taster_OpenLevel-12 0
     2020-01-01 17:24:07   Taster_OpenLevel-13 0
     2020-01-01 17:24:07   Taster_OpenLevel-14 0
     2020-01-01 17:24:07   Taster_OpenLevel-2 0
     2020-01-01 17:24:07   Taster_OpenLevel-3 0
     2020-01-01 17:24:07   Taster_OpenLevel-4 0
     2020-01-01 17:24:07   Taster_OpenLevel-5 0
     2020-01-01 17:24:07   Taster_OpenLevel-6 0
     2020-01-01 17:24:07   Taster_OpenLevel-7 0
     2020-01-01 17:24:07   Taster_OpenLevel-8 0
     2020-01-01 17:24:07   Taster_OpenLevel-9 0
     2020-01-01 17:24:06   Taster_WiserLink-1 wlss31
     2020-01-01 17:24:06   Taster_WiserLink-10 wlss68
     2020-01-01 17:24:06   Taster_WiserLink-11 wlss70
     2020-01-01 17:24:06   Taster_WiserLink-12 wlss97
     2020-01-01 17:24:06   Taster_WiserLink-13 wlss99
     2020-01-01 17:24:06   Taster_WiserLink-14 wlss102
     2020-01-01 17:24:06   Taster_WiserLink-2 wlss32
     2020-01-01 17:24:06   Taster_WiserLink-3 wlss37
     2020-01-01 17:24:06   Taster_WiserLink-4 wlss39
     2020-01-01 17:24:06   Taster_WiserLink-5 wlss42
     2020-01-01 17:24:06   Taster_WiserLink-6 wlss44
     2020-01-01 17:24:06   Taster_WiserLink-7 wlss47
     2020-01-01 17:24:06   Taster_WiserLink-8 wlss49
     2020-01-01 17:24:06   Taster_WiserLink-9 wlss51
     2020-01-01 17:39:15   Taster_WiserName-1 Rollladen 2
     2020-01-01 17:39:15   Taster_WiserName-10 Rollladen 1
     2020-01-01 17:39:15   Taster_WiserName-11 Rollladen 2
     2020-01-01 17:39:15   Taster_WiserName-12 Terrasse
     2020-01-01 17:39:15   Taster_WiserName-13 Rollladen 2
     2020-01-01 17:39:15   Taster_WiserName-14 Rollladen
     2020-01-01 17:39:15   Taster_WiserName-2 Kueche
     2020-01-01 17:39:15   Taster_WiserName-3 Rollladen 1
     2020-01-01 17:39:15   Taster_WiserName-4 Rollladen
     2020-01-01 17:39:15   Taster_WiserName-5 Rollladen 1
     2020-01-01 17:39:15   Taster_WiserName-6 Rollladen 2
     2020-01-01 17:39:15   Taster_WiserName-7 Rollladen 1
     2020-01-01 17:39:15   Taster_WiserName-8 Rollladen 2
     2020-01-01 17:39:15   Taster_WiserName-9 Rollladen 1
     2020-01-01 17:24:07   Taster_WiserRoom-1 17_WZ
     2020-01-01 17:24:07   Taster_WiserRoom-10 09_KZ
     2020-01-01 17:24:07   Taster_WiserRoom-11 09_KZ
     2020-01-01 17:24:07   Taster_WiserRoom-12 17_WZ
     2020-01-01 17:24:07   Taster_WiserRoom-13 09_Gaestezimmer
     2020-01-01 17:24:07   Taster_WiserRoom-14 04_Bad_Oben
     2020-01-01 17:24:07   Taster_WiserRoom-2 17_WZ
     2020-01-01 17:24:07   Taster_WiserRoom-3 17_WZ
     2020-01-01 17:24:07   Taster_WiserRoom-4 04_Bad_Unten
     2020-01-01 17:24:07   Taster_WiserRoom-5 23_Buero
     2020-01-01 17:24:07   Taster_WiserRoom-6 23_Buero
     2020-01-01 17:24:07   Taster_WiserRoom-7 06_SZ
     2020-01-01 17:24:07   Taster_WiserRoom-8 06_SZ
     2020-01-01 17:24:07   Taster_WiserRoom-9 09_Gaestezimmer
     2020-01-01 17:39:15   globaleSzenen   Home Away Sleep
     2020-01-01 17:39:16   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       
     header     Content-Type: application/json
     ignoreredirects 0
     retryCount 0
     type       get06
     url        http://192.168.178.128/ocf/sceneCollection/1
     value      0
   defptr:
     readingBase:
       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:
       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
   lastpoll:
     Taster_OpenLevel 1577896746.00505
     Taster_WiserLink 1577896746.00505
     Taster_WiserName 1577896746.00505
     Taster_WiserRoom 1577896746.00505
     globaleSzenen 1577896746.00505
     lokaleSzenen 1577896746.00505
   sslargs:
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
   readingMaxAge 300
   readingMaxAgeReplacement "offline"
   readingMaxAgeReplacementMode text
   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   http://192.168.178.128/ocf/wlss97/shutter/1
   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 readingMaxAge readingMaxAgeReplacement readingMaxAgeReplacementMode:text,reading,internal,expression,delete set01Data set01Hint set01Name set01TextArg:0,1 set01URL set02Data set02Hint set02Name set02TextArg:0,1 set02URL set03Data set03Hint set03IMap set03Name set03URL
   verbose    0


eine Jalousie
Internals:
   CHANGED   
   FUUID      5dfcc192-f33f-0804-9e09-63234e2aee61ea4b
   NAME       Rollladen_EG_BAD
   NR         465
   STATE      100
   TYPE       dummy
   READINGS:
     2020-01-01 14:36:57   Link_im_HomeTouch wlss39
     2020-01-01 14:36:57   Name_im_HomeTouch Rollladen
     2020-01-01 14:36:57   OpenLevel       100
     2020-01-01 14:36:57   Raum_im_HomeTouch 04_Bad_Unten
     2020-01-01 14:36:57   state           auf
Attributes:
   alexaName  Rolladen
   alexaRoom  Badezimmer unten
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_10 2\d.*:fts_shutter_20 3\d.*:fts_shutter_30 4\d.*:fts_shutter_40 5\d.*:fts_shutter_50 6\d.*:fts_shutter_60 7\d.*:fts_shutter_70 8\d.*:fts_shutter_80 9\d.*:fts_shutter_90 \d.*:fts_shutter_100
   eventMap   auf:0 zu:1 stop:2
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       ALEXA,FENSTER_TÜREN
   stateFormat OpenLevel
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-4",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-4",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-4",0)}, OpenLevel {ReadingsVal("HomeTouch","Taster_OpenLevel-4",0)},
   verbose    0
   webCmd     auf:zu:stop


das notify:
Internals:
   DEF        Rollladen_.*:(0|1|2) {my $Jalousie=ReadingsVal("$NAME","Link_im_HomeTouch",0);; fhem("\"bash /opt/fhem/FHEM/rolladen_schalten.sh $Jalousie $EVENT\"")}
   FUUID      5df64a4e-f33f-0804-a68e-fdb4b8fbe7e7319b
   NAME       notify_Rollladen_schalten
   NR         489
   NTFY_ORDER 50-notify_Rollladen_schalten
   REGEXP     Rollladen_.*:(0|1|2)
   STATE      2020-01-01 17:24:07
   TRIGGERTIME 1577895847.53689
   TYPE       notify
   READINGS:
     2019-12-29 20:14:30   state           active
Attributes:
   room       FENSTER_TÜREN
   verbose    0


Das zusammen funktioniert alles sehr gut.

Was mich allerdings noch mega nervt... Wenn FHEM die Jalousien abends alle runter fährt oder ich manuel... dann ändert sich das "OpenLevel",  also der Zustand der Jalousie und das bekommen die Dummys nicht mit... also die UserReadings in den Dummys.
Wie bekomme ich das noch hin, dass das OpenLevel, welches gleichzeitig in den Dummys noch als stateFormat gesetzt ist, immer aktuell ist?!
Es wird ja regelmäßig im HTTPMOD aktualisiert.?!


xenos1984, hat noch das Device ReadingsProxy erwähnt, das habe ich mal ausprobiert, das es quasi das "OpenLevel" als State aus dem HTTPMOD ließt.
Dann habe ich alle Parameter wie bei den Dummys gesetzt.
Der State wird regelmäßig gelesen und ändert sich hier, aber da kann ich per webcmd nicht schalten... da kommt immer ne Fehlermeldung: Unknown argument zu, choose one of das Schalten funktioniert nicht, das notify müßte auch für das ReadingsProxy funktionieren.

Readingsproxy:
Internals:
   CFGFN     
   DEF        HomeTouch:Taster_OpenLevel-12
   DEVICE     HomeTouch
   FUUID      5e0cba1b-f33f-0804-cf9d-a82b4f824e1be46c
   NAME       Rollladen_EG_WZ_Terasse
   NOTIFYDEV  global,HomeTouch
   NR         38815
   NTFY_ORDER 50-Rollladen_EG_WZ_Terasse
   READING    Taster_OpenLevel-12
   STATE      0
   TYPE       readingsProxy
   CONTENT:
     HomeTouch  1
   READINGS:
     2020-01-01 17:24:07   Link_im_HomeTouch wlss97
     2020-01-01 17:24:07   Name_im_HomeTouch Terrasse
     2020-01-01 17:24:07   Raum_im_HomeTouch 17_WZ
     2020-01-01 16:57:17   lastCmd         1
     2020-01-01 17:24:07   state           0
Attributes:
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_100
   eventMap   auf:0 zu:1 stop:2
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       FENSTER_TÜREN
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-12",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-12",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-12",0)}
   verbose    5
   webCmd     auf:zu:stop


Welches ist jetzt der beste Weg, das Problem zu lösen?
VG
René

Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: KernSani am 01 Januar 2020, 18:16:08
Hab mir das jetzt nicht im Detail angesehen, aber bekommst du kein. Event vom HTTPMOD, das du nutzen kannst, um den Dummy zu aktualisieren?


Kurz, weil mobil
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 01 Januar 2020, 18:32:15
Für readingsProxy: Ich würde das Attribut setFn des readingsProxy so anpassen, dass es das tut, was sonst dein notify tut.

Soll heißen - was macht denn der Skript /opt/fhem/FHEM/rolladen_schalten.sh? Da würde ich ansetzen.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 01 Januar 2020, 18:43:15
Hi,

@KernSani, die OpenLevel im HTTPMOD sind auch nur Readings. Wenn das Interval zuschlägt, dann werden im EventMonitor die Werte neu gelesen:
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-1: wlss31
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-2: wlss32
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-3: wlss37
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-4: wlss39
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-5: wlss42
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-6: wlss44
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-7: wlss47
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-8: wlss49
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-9: wlss51
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-10: wlss68
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-11: wlss70
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-12: wlss97
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-13: wlss99
2020-01-01 18:35:40 HTTPMOD HomeTouch Taster_WiserLink-14: wlss102
2020-01-01 18:35:42 readingsProxy Rollladen_EG_WZ_Terasse 94
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-1: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-2: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-3: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-4: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-5: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-6: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-7: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-8: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-9: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-10: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-11: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-12: 94
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-13: 0
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_OpenLevel-14: 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-1: 17_WZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-2: 17_WZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-3: 17_WZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-4: 04_Bad_Unten
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-5: 23_Buero
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-6: 23_Buero
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-7: 06_SZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-8: 06_SZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-9: 09_Gaestezimmer
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-10: 09_KZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-11: 09_KZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-12: 17_WZ
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-13: 09_Gaestezimmer
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserRoom-14: 04_Bad_Oben
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-1: Rollladen 2
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-2: Kueche
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-3: Rollladen 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-4: Rollladen
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-5: Rollladen 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-6: Rollladen 2
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-7: Rollladen 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-8: Rollladen 2
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-9: Rollladen 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-10: Rollladen 1
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-11: Rollladen 2
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-12: Terrasse
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-13: Rollladen 2
2020-01-01 18:35:42 HTTPMOD HomeTouch Taster_WiserName-14: Rollladen
2020-01-01 18:35:42 HTTPMOD HomeTouch globaleSzenen: Home Away Sleep
2020-01-01 18:35:43 HTTPMOD HomeTouch 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


@xenos1984

Mein Script baut den HTTP-Post request zusammen, der an den JalousieHub gesendet wird.
#!/bin/bash
set -x
# Curl-Befehl zum Schalten von Merten Rolladen durch Uebergabe von zwei Parameter
# $1 = Jalousie, $2 = Aktion (auf, zu, stop)
################################################
#genieren von Post-Daten
################################################
read -d '' -r  post_data <<EOF
{"action": $2}
EOF
################################################
#Befehl
################################################
curl -i -H "Content-Type: application/json" \
-X POST --data "$post_data" "http://192.168.178.128/ocf/$1/shutter/1"


Wenn ich nur einen Parameter gehabt hätte, dann hätte man durch den Dummy mit dem notify auch direkt über den HTTPMOD das schalten lassen können, aber HTTPMOD nimmt nur einen Value entgegen und daher habe ich dann ein Script geschrieben, dass zwei Parameter nimmt "# $1 = Jalousie, $2 = Aktion (auf, zu, stop)"

Den POST Befehl zusammen zu bauen war MEGA schwer, weil da kommts echt auch die richtigen "Anführungszeichen" an...

VG
René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: Beta-User am 02 Januar 2020, 06:52:16
Leicht OT: Hatte vor einiger Zeit mal kurz nachgelesen gehabt und meine, dass der Hub auch MQTT spricht.
Wenn das so ist, glaube ich, dass eine Lösung mit MQTT2_.* einfacher zu bauen wäre.

Ansonsten bin ich bei xenos1984: Da müßten  passende setFn her (da solltest du nicht gleich anfangen, irgendwas ziemlich oberflächliches zu fixen (eventMap), sondern erst mal die Basis sauber gestalten.

(Und was userReadings sollen, die feste Werte aus einem anderen Device holen, (und das noch ohne trigger-Angabe), erschließt sich mir auch nicht).
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 02 Januar 2020, 12:03:23
Hallo Beta-User,

also der HUB spricht meines Wissens (noch) kein MQTT, aber demnächst kann man evtl. mit IFTTT drauf zugreifen.
Bisher gabs keine Lösungen außer über Alexa (und damit das Internet) drauf zuzugreifen.

Ich habe jetzt in mühevoller Kleinarbeit raus gefunden wie man offline mit dem HUB sprechen kann und damit auch dieses System in FHEM integrieren kann und damit auch Jalousien steuern kann. Über den Hub kann man auch Heizungsthermostate und Lampen steuern. Merten bringt da noch viel mehr....

Ich würde ja gern ein Modul für WISER anbieten, da ich jetzt schon viel Wissen zusammengetragen habe, aber mir fehlt das Wissen um PERL etc. um solch ein Modul zu bauen.
Dann könnte das Modul nämlich selber direkt mit dem Hub sich verbinden, alle Geräte und Zustände auslesen und als Devices schaltbar machen.
Das wäre toll.

So habe ich das jetzt mit meinen eigenen Möglichkeiten gemacht und das über Dummys realisiert und mit einem notify (und eine Sequenz).
Ich würde jetzt nur noch gern den Zustand der Jalousie, weil man in auslesen kann auch in Fhem sichbar machen, also in meinen Dummys.

Das sollte jetzt auch die Frage beantworten, warum man Werte in einem Dummy "sammelt"... weil ich so alle Informationen zu einer Jalousie zusammen habe.
Warum sollte man es nicht machen? Ich lese immer wieder, dass viele von den PROs das hier auch schreiben... das sie keinen Sinn darin sehen.
Also für mich ist der Sinn klar... und andere Module bringen mir das aktuell nicht oder ich versteh es nicht.
ReadingsProxy habe ich getestet, da kann ich  nur auf einen Reading auslesen. Was in meinem Fall jetzt viell. sogar funktionieren würde, weil ich nur den Zustand der Jalousie auslesen würde.

Ich hätte es gern noch dynamischer gehabt, falls sich im Hub durch FW-Udates mal was ändert, hätte ich sogar gern die Raumnamen im Hub oder die URLs die erzeugt werden müssen, um die einzelnen Jalousien anzusteuern, auch noch alles dynamsich ausgelesen. Aber das kann der Readingsproxy scheinbar nicht, oder ich versteh es nicht.
Mit setFn habe ich es weiterhin auch nicht hinbekommen, dass ich mein Script zum schalten auslösen kann...

Also zusammen hänge ich jetzt hier mit meiner 95% Lösung, basierend auf Dummys und hätte jetzt nur noch die Werte wo die Jalousie steht. Bleibt wahrscheinlich nur ein weiteres notity.

VG+Danke
René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 02 Januar 2020, 14:03:39
Bei mir ersetzt ein readingsProxy sowohl Dummy als auch Notify, weil es ja eigentlich genau dafür gedacht ist, z.B. ein einzelnes Reading aus einem anderem Gerät wie dem HTTPMOD zu vereinzeln und einzeln bedienbar zu machen. Ganz grob:

define Rollladen_EG_BAD readingsProxy HomeTouch:Taster_OpenLevel-4
attr Rollladen_EG_BAD setFn {my $Jalousie=ReadingsVal("HomeTouch","Taster_WiserLink-4",0);; fhem("\"bash /opt/fhem/FHEM/rolladen_schalten.sh $Jalousie $EVENT\"")}


(Und dazu natürlich noch mehr Attribute, die du jetzt im Dummy hast, um das ganze zu bedienen.)

An und für sich sollte aber auch HTTPMOD keine Probleme haben, etwas mit 2 Parametern zu schalten, ohne dass man da einen Bash Skript bemühen muss.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 02 Januar 2020, 14:13:12
Hi xenos,

also ich bin ja gern bereit zu lernen und sitze gerade dabei und versuche es besser zu machen... :)

Hier mein ReadingsProxy
Internals:
   DEF        HomeTouch:Taster_OpenLevel-12
   DEVICE     HomeTouch
   FUUID      5e0cba1b-f33f-0804-cf9d-a82b4f824e1be46c
   NAME       Rollladen_EG_WZ_Terasse
   NOTIFYDEV  global,HomeTouch
   NR         523
   NTFY_ORDER 50-Rollladen_EG_WZ_Terasse
   READING    Taster_OpenLevel-12
   STATE      100
   TYPE       readingsProxy
   CONTENT:
     HomeTouch  1
   READINGS:
     2020-01-02 12:13:34   Link_im_HomeTouch wlss97
     2020-01-02 12:13:34   Name_im_HomeTouch Terrasse
     2020-01-02 12:13:34   Raum_im_HomeTouch 17_WZ
     2020-01-01 16:57:17   lastCmd         1
     2020-01-02 12:13:34   state           100
Attributes:
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_100
   eventMap   auf:0 zu:1 stop:2
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       FENSTER_TÜREN
   setFn      Rollladen_.*:(0|1|2) {my $Jalousie=ReadingsVal("$READING","Link_im_HomeTouch",0);; fhem("\"bash /opt/fhem/FHEM/rolladen_schalten.sh $Jalousie $CMD\"")}
   setList    0 1 2
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-12",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-12",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-12",0)}
   verbose    5
   webCmd     auf:zu:stop


Das Ding schaltet gar nichts... es kommt nicht mal ne LogAusgabe

Ich lese jetzt als state den Wert von OpenLevel aus.
Den statischen Rest habe ich mir mit userReadings reingeholt.
Was zu schalten wäre ist über webCmd gesetzt.
Die eigentlichen Werte die ich brauch sind dann über eventMap gesetzt.

Klicke ich auf die WebComands bekomme ich immer folgenden Fehler : "Unknown argument auf, choose one of 0 1 2"
Klicke ich auf die setList einstellungen kommt das Gleiche: Unknown argument auf, choose one of 0 1 2
ohne setList sagt er mir "Unknown argument auf, choose one of "

Ich würde das gern Verbessern, aber versteh noch nicht ganz wie... und warum...
Ich habe noch ein paar andere stellen bei mir in Fhem wo ich das so gemacht habe um meine Heizung zu steuern... wenn ich das verstehen würde, dann könnte ich mehr optimieren..

VG
René


PS: ich habe bei HTTPMOD lange gesucht und bin nur auf das hier gestoßen und da ist sowohl bei Text als auch bei Zahlen nur ein Übergabewert erwähnt... ich wollte ja zwei Werte übergeben, einmal in der URL das Gerät und dann den Status den es machen soll...
https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device (https://wiki.fhem.de/wiki/HTTPMOD#Advanced_configuration_to_define_a_set_command_and_send_data_to_a_device)


unten beim Taster, da gibts in der URL $val2 ...

   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   http://192.168.178.128/ocf/$val2/shutter/1
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 02 Januar 2020, 14:50:20
Bei der setFn irritieren mich gleich mehrere Dinge:

Rollladen_.*:(0|1|2) {my $Jalousie=ReadingsVal("$READING","Link_im_HomeTouch",0);; fhem("\"bash /opt/fhem/FHEM/rolladen_schalten.sh $Jalousie $CMD\"")}

Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 02 Januar 2020, 14:57:43
Hi Xenos,

ja das ist noch alles im Versuchsbau...
Rollladen_.*:(0|1|2) => das war c+p aus meinem notify... weil ich nur auf diese Werte reagieren wollte...

mit $READING wollte ich den Namen des Readingsproxy setzen in dem das ausgeführt wird... dachte das funktioniert damit.

Trotz alledem... es kommt gar nicht zu setFn... weil es schon an den Fehlermeldungen beim drücken der webCmd kommt.

VG
René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 02 Januar 2020, 23:00:46
Ich würde es für den Anfang erst einmal ohne eventMap und webCmd versuchen, d.h. die set-Variablen so aufrufen, wie sie vom HTTPMOD erwartet werden und sie nicht durch "auf" etc. ersetzen. Soll heißen, erst einmal würde ich versuchen, den readingsProxy mit der einfachsten möglichen, minimalen Konfiguration zum Laufen zu bringen, statt gleich mit Copy&Paste alles auf einmal vom Dummy zu kopieren. Daran feilen kann man immer noch, wenn es erst einmal läuft.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 02 Januar 2020, 23:50:44
Hi xenos, dann wird mit das readingsproxy aber immer unverständlichlicher... Der httpmod hat doch aber nichts sinnvolles an set commandos mit denen ich irgendwas machen könnte...
den benutze ich doch quasi nur um einfach JSON aus dem hub auslesen kann und damit an die entsprechenden Infos zu kommen...

VG René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 03 Januar 2020, 03:39:26
Du hast aber in der setList des readingsProxy die Werte 0 1 2 vorgegeben, die du letztlich an den Hub übermitteln willst, wenn ich das richtig sehe - zwar in deiner Lösung nicht über das HTTPMOD Device, sondern über einen Bash Skript. Soll heißen, der Skript erwartet Werte 0 1 2. Dann würde ich - zumindest für einen ersten Test - den readingsProxy auch so bauen, dass er nur mit diesen Werten arbeitet statt "auf", "zu" etc. und diese Umbenennung erst dann einbauen, wenn es damit läuft.

Die set Befehle sollten sich ja auch über das HTTPMOD Device realisieren lassen statt über den Bash Skript, aber auch das kann man als weitere Optimierung für später lassen.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 11:38:32
Hi Xenos,

also reduziert auf das Nötigste, geht es jetzt:
Internals:
   DEF        HomeTouch:Taster_OpenLevel-12
   DEVICE     HomeTouch
   FUUID      5e0cba1b-f33f-0804-cf9d-a82b4f824e1be46c
   NAME       Rollladen_EG_WZ_Terasse
   NOTIFYDEV  global,HomeTouch
   NR         523
   NTFY_ORDER 50-Rollladen_EG_WZ_Terasse
   READING    Taster_OpenLevel-12
   STATE      93
   TYPE       readingsProxy
   CONTENT:
     HomeTouch  1
   READINGS:
     2020-01-03 11:30:14   Link_im_HomeTouch wlss97
     2020-01-03 11:30:14   Name_im_HomeTouch Terrasse
     2020-01-03 11:30:14   Raum_im_HomeTouch 17_WZ
     2020-01-03 11:30:14   lastCmd         2
     2020-01-03 11:29:03   state           93
Attributes:
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_100
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       FENSTER_TÜREN
   setFn      {my $Jalousie=ReadingsVal("HomeTouch","Taster_WiserLink-12",0);; fhem("\"bash /opt/fhem/FHEM/rolladen_schalten.sh $Jalousie $CMD\"")}
   setList    0 1 2
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-12",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-12",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-12",0)}
   verbose    5


selbst wenn ich das    webCmd     0:1:2 noch setzte geht es...

Aber wenn ich das webCmd ändere auf die Werte die ich als "Endnutzer" sehen möchte und dazu eine eventMap setzte, dann knallt es wieder
"Unknown argument auf, choose one of 0 1 2"

Der HTTPMOD ist aktuell nur ein lesendes Device, es gibt dort eigentlich keine set-Befehle für die einzelnen Taster(Jalousien), da ich ja nicht zwei Values übergeben kann.
Aktuell ist da nur ein statischer Schalter für eine Jalousie fest eingestellt. Nur so zum Testen.

Tja, jetzt ist die Frage... kann man überhaupt eigene webcmd setzten oder nur das, was auch das PARENT Device vorgibt?

VG
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: Beta-User am 03 Januar 2020, 14:15:24
Wenn, dann musst du webCmd UND eventMap ändern...Dann kannst du auch dmdIcon ergänzen.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 14:32:22
Hi Beta-User, ja, das ist klar. Das eine um im FHEM Web ne Anzeige zu haben und das andere als Mapping zu den sets..

ABER es geht einfach nicht. Mein Dummys sind so definiert, da funktioniert es... webCmd + eventMap .

Beim ReadingsProxy gehts nicht... sowie ich das Attribut webCmd einfüge kommt in in FHEM ein PopUP mit ner Fehlermeldung:
Unknown argument auf, choose one of 0 1 2

Siehe auch screenshot.

Ich verstehs nicht...
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 03 Januar 2020, 14:51:11
Bist du sicher, dass die Reihenfolge stimmt? In den Beispielen zu eventMap ist es umgekehrt:

eventMap 0:auf 1:zu 2:stop
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 15:01:50
Hallo Xenos...

BOAHH DAS WAR DIE LÖSUNG!!!  Aber das kann nicht sein...

In meinem Dummys ist es umgekehrt und funktioniert so in allen Dummys.
Hier ein BSP:
Internals:
   FUUID      5dfcc192-f33f-0804-9e09-63234e2aee61ea4b
   NAME       Rollladen_EG_BAD
   NR         465
   STATE      100
   TYPE       dummy
   READINGS:
     2020-01-03 14:56:56   Link_im_HomeTouch wlss39
     2020-01-03 14:56:56   Name_im_HomeTouch Rollladen
     2020-01-03 14:56:56   OpenLevel       100
     2020-01-03 14:56:56   Raum_im_HomeTouch 04_Bad_Unten
     2020-01-03 14:56:56   state           stop
Attributes:
   alexaName  Rolladen
   alexaRoom  Badezimmer unten
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_100
   eventMap   auf:0 zu:1 stop:2
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       ALEXA,FENSTER_TÜREN
   setList    0 1 2
   stateFormat OpenLevel
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-4",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-4",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-4",0)}, OpenLevel {ReadingsVal("HomeTouch","Taster_OpenLevel-4",0)},
   verbose    5
   webCmd     auf:zu:stop


In FHEM WIKI steht auch https://wiki.fhem.de/wiki/EventMap#Beispiele (https://wiki.fhem.de/wiki/EventMap#Beispiele) das ALT DURCH NEU ersetzt wird... also  Meine alten Werte sind auf, zu, stop und die neuen 0, 1, 2.

Und ich habe es wie gesagt so auch in allen Dummys bei mir...

Wieso das bei Readingsproxy umgekehrt ist.... das kann ja nur der Entwickler wissen!?

Jetzt probiere ich es weiter... wenn ich jetzt noch zwei Values in HTTPMOD übergeben kann, dann kann ich mein Script wieder rauswerfen... ERSTMAL DANKE für den "kuriose" Lösung.

VG
René


PS: ReadingsProxy generiert keine Events?! Im EventMonitor kann ich nichts finden, wenn ich auf "auf, zu oder stop" drücke... Damit ist meine Sequenze nicht mehr nutzbar... die bei Doppelklick ein Stop auslöst....
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 03 Januar 2020, 15:52:05
Ehrlich gesagt finde ich die Beschreibung "alt" und "neu" bei den Werten in der eventMap etwas irritierend. Hier ist mit "alt" gemeint, dass dies die originalen, unveränderten Werte in deiner "alten" Konfiguration sind, also 0,1,2 - so wie sie vom Gerät kommen. Denen willst du "neue" Namen geben und sie stattdessen auf,zu,stop nennen - also sind letztere "neu". Warum das beim Dummy auch umgekehrt funktioniert ist mir aber auch ein Rätsel.

Zum set via HTTPMOD: Mir ist nicht klar, wie du in deiner Definition auf eine Variable namens "$val2" kommst bzw. woher du die hast. In der Dokumentation konnte ich keine solche finden. Ich schätze, hier muss man entweder für jede Jalousie ein setXX definieren, oder Name der Jalousie und Wert gemeinsam übergeben und dann im HTTPMOD mit etwas Perl-Code wieder aufteilen.

Zu den Events bin ich überfragt. Allerdings setzt du ja hier im Gegensatz zum Dummy + Notify durch Anklicken nicht den Status des Device, sondern rufst mittels setFn direkt einen Skript auf. Wenn du nun auch noch ein Event oder eine andere Aktion auslösen willst, sollte die mit in die setFn. Im einfachsten Falle könntest du es mit setstate versuchen.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 16:20:25
Hi Xenos...

ZitatZum set via HTTPMOD: Mir ist nicht klar, wie du in deiner Definition auf eine Variable namens "$val2" kommst bzw. woher du die hast. In der Dokumentation konnte ich keine solche finden. Ich schätze, hier muss man entweder für jede Jalousie ein setXX definieren, oder Name der Jalousie und Wert gemeinsam übergeben und dann im HTTPMOD mit etwas Perl-Code wieder aufteilen.

Das habe ich mir nur so ausgedacht, als Bsp, damit man sieht was ich will. In der Doku ist nur von einem val die Rede, da hast du recht.
Ja genau, das defnieren aller Jalousien wollte ich ja vermeiden. Es funktioniert auch... val kann ich auch in der URL setzen, dann habe ich aber keinen "val" mehr für 0 1 oder 2.

OK, dass scheint hier alles ziehmlich speziell zu sein... daher werde ich mal schauen, was noch so geht... aber für mich ist die Lösung mit den Dummys wahrscheinlich doch das beste...
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: Beta-User am 03 Januar 2020, 16:24:14
Wieso? Das mit ReadingsProxy tut doch, oder?
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 19:27:56
Hi Beta-User,

also also bei der Variante mit den Dummys habe ich nur einen Nachteil, ich habe nicht automatisch den Status der Jalousien als ICON.

Bei den ReadingsProxy habe ich dafür kein Event, daher funktioniert der Doppelklick für meine Sequenze nicht mehr und ich habe grad komische Phänomene, dass das Ding von alleine schaltet?! kA was da los ist.
Durch den fehlenden Doppelklick brauch ich dann ein weiteren Schalter im WebUI und muss das ganze Tablett UI erweitern...

Also im Großen und Ganzen, ist son ReadingsProxy ne feine Sache, ich werde das evtl. an einer anderen Stelle nutzen, ich glaube es wird mir hier nicht wirklich helfen... dazu kommt noch das unterschiedliche Verhalten des Attributes eventMap...

VG
René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: Beta-User am 03 Januar 2020, 19:45:29
Na ja, was du an code ausführst, ist deine Sache, ich würde hier vermeiden, auf die bash-Ebene zu gehen und das mit Perl zusammenbauen (ungetestet, kann sein, dass das wegen irgendwelcher Rechtethemen nicht (ohne weiteres) geht).
Damit sollten sich auch Doppelklicks detektieren lassen (z.B. über eine ReadingsAge-Abfrage am ReadingsProxy, in diese Richtung geht auch der Vorschlag von @xenos1984); nur eben "anders" als bisher via sequence oä..
Die Probleme kannst du nur finden, wenn du genauer hinschaust, was an Events kommt usw. und was an Verkehr zur Steuereinheit; würde aber tippen, dass das was anderes ist (ReadingsProxy hat afaik manchmal und nur den Nachteil, dass er keine Events erzeugt, das war jedenfalls mal im Zusammenhang mir MQTT_GENERIC_BRIDGE ein Thema; aber von so einem Eigenleben habe ich bisher noch nicht gehört); das "ungewöhnliche" event-Mapping (?) muß man ja nur einmal durchschaut haben.

Aber wie dem auch sei: Du mußt damit klarkommen, nicht wir (ich hätte nur eventuell ein attrTemplate im Hinterkopf, um anderen zukünftig zu helfen. Und da nutze ich in der Regel nur Code bzw. Module, die mich überzeugen und die ich auch (halbwegs) verstehe, und Dummy ist (für diese Zwecke) mMn. eine nicht überzeugende Notlösung (ich kenne aber zugegebenermaßen das Ziel-Device nicht, vielleicht ist es wirklich "so schräg", dass man Dummy braucht...)

Gruß, Beta-User

[OT] Sorry auch nochmal wegen des Einwurfs bzgl. MQTT/MQTT2_DEVICE. Aus eigener Erfahrung weiß ich halt, dass man da "alles mögliche" zusammenschustern kann und in der Regel unmittelbare Rückmeldung bekommt, was auf der Hardware-Seite passiert.
Wollte dich nicht frustrieren, es ist schon klar, dass in dem, was du jetzt hast und auch hattest, als du den Thread aufgemacht hattes, schon unglaublich viel "Gehirnschmalz" steckt...
Das verdient volle Anerkennung!

(geht mir übrigens manchmal auch so, dass ich den wahren Wert mancher Vorschläge erst später erkenne, genauso, wenn ich auf dem Holzweg bin...)
[/OT]
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 20:10:09
Hi Beta-User,

danke für die Blumen... ich würde ja gern für alle die die sich einen HomeTouch kaufen und damit Ihre Hausautomatisierung aufbauen auch eine FHEM Integration anbieten... ich denke ich habe schon eine Menge Grundlagen gesammelt.
Ich bin auch in Kontakt mit Merten, aber die Rücken leider nicht mit der API so richtig raus und ich habe jetzt alles selber zusammen getragen.
https://www.merten.de/produkte/home-touch.html (https://www.merten.de/produkte/home-touch.html)

Ich würde gern  ja auch gern mit so wenig wie möglich Komponenten auskommen und mit den optimalen FHEM Devices arbeiten.

Ich habe gerade noch eine andere Idee...

Jetzt sieht mein ReadingsProxy so aus:
Internals:
   DEF        HomeTouch:Taster_OpenLevel-12
   DEVICE     HomeTouch
   FUUID      5e0cba1b-f33f-0804-cf9d-a82b4f824e1be46c
   NAME       Rollladen_EG_WZ_Terasse
   NOTIFYDEV  global,HomeTouch
   NR         523
   NTFY_ORDER 50-Rollladen_EG_WZ_Terasse
   READING    Taster_OpenLevel-12
   STATE      auf
   TYPE       readingsProxy
   CONTENT:
     HomeTouch  1
   READINGS:
     2020-01-03 20:01:12   Link_im_HomeTouch wlss97
     2020-01-03 20:01:12   Name_im_HomeTouch Terrasse
     2020-01-03 20:01:12   Raum_im_HomeTouch 17_WZ
     2020-01-03 19:57:48   lastCmd         1
     2020-01-03 20:01:12   state           0
Attributes:
   devStateIcon 100:fts_shutter_10 1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 9\d.*:fts_shutter_10 \d.*:fts_shutter_100
   eventMap   0:auf 1:zu 2:stop
   genericDeviceType switch
   homebridgeMapping On=state,cmdOn=1,cmdOff=0
   icon       fts_shutter
   room       FENSTER_TÜREN
setFn      {my $Jalousie=ReadingsVal("HomeTouch","Taster_WiserLink-12",0);; fhem("
attr HomeTouch set03URL http://192.168.178.128/ocf/$Jalousie/shutter/1; save;
set HomeTouch Taster $CMD;")}
   setList    0 1 2
   userReadings Name_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserName-12",0)}, Link_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserLink-12",0)}, Raum_im_HomeTouch {ReadingsVal("HomeTouch","Taster_WiserRoom-12",0)}
   verbose    5
   webCmd     auf:zu:stop


setFn      {my $Jalousie=ReadingsVal("HomeTouch","Taster_WiserLink-12",0);; fhem("
attr HomeTouch set03URL http://192.168.178.128/ocf/$Jalousie/shutter/1; save;
set HomeTouch Taster $CMD;")}


Das geht auch... ich kann so mein Bash-Script wegwerfen und den HTTPMOD direkt steuern (aber nur mit einem setURL für alle Taster)

Das Problem ist jetzt, das ich mit attr eine Änderung mache, die ich speichern muss. An einer anderen Stelle habe ich das mit save lösen können, aber jetzt funktioniert es zwar, aber das rote Fragezeichen geht nicht weg...

Weiterhin kann ich über den Weg bestimmt das Event von HTTPMOD abfangen und mein Sequenz wieder nutzen...

2020-01-03 20:04:58 Global global ATTR HomeTouch set03URL http://192.168.178.128/ocf/wlss97/shutter/1
[b]2020-01-03 20:04:58 HTTPMOD HomeTouch Taster 0
[/b]2020-01-03 20:04:59 Global global ATTR HomeTouch set03URL http://192.168.178.128/ocf/wlss97/shutter/1
2020-01-03 20:04:59 HTTPMOD HomeTouch Taster 1
2020-01-03 20:05:03 PRESENCE Handy_Rene present
2020-01-03 20:05:03 PRESENCE Handy_Rene presence: present
2020-01-03 20:05:06 Global global ATTR HomeTouch set03URL http://192.168.178.128/ocf/wlss97/shutter/1
[b]2020-01-03 20:05:06 HTTPMOD HomeTouch Taster 1
[/b]2020-01-03 20:05:07 ESPEasy ESPEasy_WEMOS_FLUR_EG_PIR presence: absent
2020-01-03 20:05:09 PRESENCE Handy_Ara absent
2020-01-03 20:05:09 PRESENCE Handy_Ara presence: absent
2020-01-03 20:05:11 PRESENCE Handy_Rene present
2020-01-03 20:05:11 PRESENCE Handy_Rene presence: present
2020-01-03 20:05:13 Global global ATTR HomeTouch set03URL http://192.168.178.128/ocf/wlss97/shutter/1
[b]2020-01-03 20:05:13 HTTPMOD HomeTouch Taster 0
[/b]2020-01-03 20:05:15 Global global ATTR HomeTouch set03URL http://192.168.178.128/ocf/wlss97/shutter/1
[b]2020-01-03 20:05:16 HTTPMOD HomeTouch Taster 2
[/b]


Leider bekomme ich aus dem HTTPMOD Fred noch keine Antwort, ob man zwei Paramter übergeben kann, aber ich setze jetzt einfach das Attribut set03URL einfach dynamisch mit dem Wert der entsprechenden Jalousie und dann kann ich ja den AUF AB STOP Wert übergeben.

Nur das rote Fragezeichen ist noch ein Problem und eben ging die eine TestJalousie schon wieder von alleine....

VG
René
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: Beta-User am 03 Januar 2020, 20:20:11
Hmm, irgendwo hatte xenos1084 die Tage (in einem anderen Thread) eine Lösung gepostet, wie man mit Variablen die URL anpassen kann; kann nicht sagen, ob das auch im Kontext setUrl funktioniert, aber dann ginge es ohne Config-Änderung, wenn man den Wert in ein Reading (am HTTPMOD) packt und dort dynamisch ausliest.
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: fireball am 03 Januar 2020, 20:47:12
das war hier, hab die Seite noch offen...
https://forum.fhem.de/index.php/topic,106953.msg1008007.html#msg1008007

define mydevice HTTPMOD %%URL%% 3600
attr mydevice replacement01Mode expression
attr mydevice replacement01Regex %%URL%%
attr mydevice replacement01Value ReadingsVal("mydummy", "myreading", "")


Muss ich mal probieren...
Titel: Antw:HTTPMOD / DUMMY Device / notify
Beitrag von: xenos1984 am 03 Januar 2020, 21:00:43
Ja, die gleiche Lösung sollte auch für eine setURL funktionieren. Dann braucht man kein Attribut dynamisch ändern, sondern nur ein Reading auslesen.