HTTPMOD / DUMMY Device / notify

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

Vorheriges Thema - Nächstes Thema

amenomade

#15
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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

fireball

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


  • Ich habe ein HTTPMOD welches mir alle wichtigen Parameter aus dem JalousieHub rausliest (via Intervall).
  • Ich habe jetzt 14 Dummys, die jeweils eine Jalousie schalten können.
  • Ich habe eine notify, welches jenachdem was ich in den JalousieDummys drücke, die URL baut und den Postrequest absetzt um die Jalousien zu schalten.

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é


KernSani

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
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

xenos1984

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.

fireball

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é

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

fireball

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é

xenos1984

#22
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.

fireball

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


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

xenos1984

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\"")}


  • Welchen Zweck hat das Rollladen_.*:(0|1|2)? Da sollte nur der Perl-Code hin, also der {...} Teil.
  • Im Code, übergibst du $READING da, wo der Name des Gerätes sein sollte, und das müsste hier "Rollladen_EG_WZ_Terasse" sein, denn so heißt ja der readingsProxy, dessen "Link_im_HomeTouch" du hier ausliest. Stattdessen könntest du aber auch auf die userReadings verzichten und gleich das Reading my $Jalousie=ReadingsVal("HomeTouch","Taster_WiserLink-12",0) setzen.

fireball

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é

xenos1984

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.

fireball

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é

xenos1984

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.

fireball

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