HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)

Begonnen von bartpl, 04 Februar 2020, 13:04:43

Vorheriges Thema - Nächstes Thema

amenomade

Dann ist vielleicht doch "getXXExtractAllJSON 2" etwas für dich. In der raw DEF ist es dann relativ einfach, die Sachen umzubenennen
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

clumsy

Evtl, ja...

Wobei ich schaue ob ich allenfalls grad eine Lösung finde bei der ich die code/value paare aus dem object_result in readings mit namen <code> und wert <value> kriege, dann hab ichs grad richitg... allenfalls halt mit einem externen script...

clumsy

#17
Ein Ansatz ist noch, dass ich halt für jede URL ein eigenes Device/define mache so habe ich die object_result sicher nicht überlappend, in der Hoffnung die Reihenfolge der Code/Value Paare ändert sich nicht...

Zitat von: amenomade am 12 Oktober 2020, 10:27:32
Man kann auch in set|get|readingXXJSON Regex benutzen, z.B.reading01JSON object_result_[0-9]+_value Somit extrahiert er object_result_01_code, object_result_02_code, object_result_03_code, object_result_04_code usw
Ich bin nicht sicher ob das gewollt ist, wenn ich jedoch im readingXXJSON eine Regex (z.b. wie oben angegeben) nutze, dann werden die Readings mit der Regex benannt, ist zwar eineindeutig, sieht aber etwas komisch aus, wie ich finde (natürlich vor dem umbenennen ;)
READINGS:
     2020-10-12 14:01:52   object_result_[0-9]+_value-1 0
     2020-10-12 14:01:52   object_result_[0-9]+_value-10 0000000000000000
     2020-10-12 14:01:52   object_result_[0-9]+_value-11 1
     2020-10-12 14:01:52   object_result_[0-9]+_value-12 0
     2020-10-12 14:01:52   object_result_[0-9]+_value-13 8.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-14 35.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-15 1
     2020-10-12 14:01:52   object_result_[0-9]+_value-16 15.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-17 35.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-18 27.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-19 33.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-2 1
     2020-10-12 14:01:52   object_result_[0-9]+_value-20 27.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-21 11.5
     2020-10-12 14:01:52   object_result_[0-9]+_value-22 10.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-23 13.5
     2020-10-12 14:01:52   object_result_[0-9]+_value-24 1
     2020-10-12 14:01:52   object_result_[0-9]+_value-3 0
     2020-10-12 14:01:52   object_result_[0-9]+_value-4 33.0
     2020-10-12 14:01:52   object_result_[0-9]+_value-5 0
     2020-10-12 14:01:52   object_result_[0-9]+_value-6 0
     2020-10-12 14:01:52   object_result_[0-9]+_value-7 0000001000000000
     2020-10-12 14:01:52   object_result_[0-9]+_value-8 0000000000001000
     2020-10-12 14:01:52   object_result_[0-9]+_value-9 0000000000000000



EDIT: wenn ich dann den Namen ändern will sagt er mir:

fhem> attr wp_detail object_result_[0-9]+_value-4Name Set_Temp
wp_detail: bad attribute name 'object_result_[0-9]+_value-4Name' (allowed chars: A-Za-z/\d_\.-)

amenomade

#18
Die Namen müssen passend zu get/readingXXJSON Attribut gesetzt werden: wenn die Readings mit reading128JSON extrahiert werden, müssen die Attribute reading128-1Name reading128-2Name definiert werden

Bei der Regex ist etwas faul. Versuch mal mit
reading128JSON object_result.*value

Gibt es irgendwo ein gesamtes "list" vom HTTPMOD (ich kann mich dunkel erinnert, dass das ganze hier etwas mit einem anderen Thread zu tun hat)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

clumsy

Die Definiton hab ich mal unten angehängt... das list ist recht lange... kann ich aber sonst nachliefern..

Die regex war wie von dir vorgeschlagen
attr wp_detail reading01JSON  object_result_[0-9]+_value

Nicht wundern, in der definition unten nehm ich jetzt extractALLJSON 2 (ohne Filter), ist mein aktueller Versuch. Nur generiert das irgendwie keine namens attribute wie in der commandref beschrieben... evtl. mach ich da noch was falsch?!

define wp_detail HTTPMOD http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json 30
setuuid wp_detail 5f844840-f33f-c70a-1a75-abd2ed16a3492c75
attr wp_detail userattr reading01JSON requestData requestHeader1 requestHeader2 sid01Data sid01IdJSON sid01URL sidHeader1
attr wp_detail DbLogExclude state,STATE
attr wp_detail alias Waermepumpe Detail
attr wp_detail disable 0
attr wp_detail enableControlSet 1
attr wp_detail enableCookies 1
attr wp_detail event-on-change-reading .*
attr wp_detail event-on-update-reading .*
attr wp_detail extractAllJSON 2
attr wp_detail reAuthAlways 0
attr wp_detail reAuthRegex .*(User information is not available|401).*
attr wp_detail requestData {"device_code":"xxxxxxxx","protocal_codes":["Power","Mode","Manual-mute","Set_Temp","1158","1159","2074","2075","2076","2077","H02","H03","R08","R09","H37","R10","R11","R01","R02","R03","T01","T02","T03","F17"]}
attr wp_detail requestHeader1 x-token: $sid
attr wp_detail requestHeader2 Content-Type: application/json
attr wp_detail room Presence
attr wp_detail sid01Data {"user_name":"xxxxxx","password":"xxxxxxxx","type":"2"}
attr wp_detail sid01IdJSON object_result_x-token
attr wp_detail sid01URL http://cloud.linked-go.com:84/cloudservice/api/app/user/login.json
attr wp_detail sidHeader1 Content-Type: application/json
attr wp_detail sslArgs SSL_verify_mode,0
attr wp_detail verbose 5


clumsy

Hier noch der Versuch mit
   reading01JSON object_result.*value


Auch hier sehen m.E. die Readings komisch aus, weil die Wildcard im Namen drin bleibt....

und ein kompletter list:
fhem> list wp_detail
Internals:
   BUSY       0
   CFGFN      /etc/fhem/httpmod.cfg
   DEF        http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json 30
   FUUID      5f847b15-f33f-c70a-4bc8-0ac77aab9b7a1e88
   HTTPCookies JSESSIONID=xxxxxxxxxxxxx
   Interval   30
   JSONEnabled 1
   LASTSEND   1602517814.06976
   LastAuthTry 2020-10-12 17:49:44
   MainURL    http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json
   ModuleVersion 3.4.3 - 1.5.2018
   NAME       wp_detail
   NR         52388
   STATE      ???
   TRIGGERTIME 1602517844.06701
   TRIGGERTIME_FMT 2020-10-12 17:50:44
   TYPE       HTTPMOD
   addr       http://cloud.linked-go.com:84
   auth       0
   code       200
   conn
   data       {"device_code":"xxxxxxxxxxxxxx","protocal_codes":["Power","Mode","Manual-mute","Set_Temp","1158","1159","2074","2075","2076","2077","H02","H03","R08","R09","H37","R10","R11","R01","R02","R03","T01","T02","T03","F17"]}
   displayurl http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json
   header     x-token: xxxxxxxxx
Content-Type: application/json
Cookie: JSESSIONID=xxxxxxxxxxxx
   host       cloud.linked-go.com
   httpheader HTTP/1.1 200
Date: Mon, 12 Oct 2020 15:50:14 GMT
Content-Type: application/json;charset=UTF-8
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 4
   hu_port    84
   hu_portSfx :84
   ignoreredirects 0
   loglevel   4
   path       /cloudservice/api/app/device/getDataByCode.json
   protocol   http
   redirects  0
   sid        xxxxxxxxxxx
   timeout    2
   url        http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json
   value      0
   HTTPCookieHash:
     JSESSIONID:
       Options    Path=/cloudservice; HttpOnly
       Value      xxxxxxxxxxxx
   Helper:
     DBLOG:
       object_result.*value-1:
         dblog:
           TIME       1602517814.67826
           VALUE      0
       object_result.*value-10:
         dblog:
           TIME       1602517814.67826
           VALUE      0000000000000000
       object_result.*value-11:
         dblog:
           TIME       1602517814.67826
           VALUE      1
       object_result.*value-12:
         dblog:
           TIME       1602517814.67826
           VALUE      0
       object_result.*value-13:
         dblog:
           TIME       1602517814.67826
           VALUE      8.0
       object_result.*value-14:
         dblog:
           TIME       1602517814.67826
           VALUE      35.0
       object_result.*value-15:
         dblog:
           TIME       1602517814.67826
           VALUE      1
       object_result.*value-16:
         dblog:
           TIME       1602517814.67826
           VALUE      15.0
       object_result.*value-17:
         dblog:
           TIME       1602517814.67826
           VALUE      35.0
       object_result.*value-18:
         dblog:
           TIME       1602517814.67826
           VALUE      27.0
       object_result.*value-19:
         dblog:
           TIME       1602517814.67826
           VALUE      33.0
       object_result.*value-2:
         dblog:
           TIME       1602517814.67826
           VALUE      1
       object_result.*value-20:
         dblog:
           TIME       1602517814.67826
           VALUE      27.0
       object_result.*value-21:
         dblog:
           TIME       1602517814.67826
           VALUE      11.0
       object_result.*value-22:
         dblog:
           TIME       1602517814.67826
           VALUE      11.0
       object_result.*value-23:
         dblog:
           TIME       1602517814.67826
           VALUE      13.0
       object_result.*value-24:
         dblog:
           TIME       1602517814.67826
           VALUE      1
       object_result.*value-3:
         dblog:
           TIME       1602517814.67826
           VALUE      0
       object_result.*value-4:
         dblog:
           TIME       1602517814.67826
           VALUE      33.0
       object_result.*value-5:
         dblog:
           TIME       1602517814.67826
           VALUE      0
       object_result.*value-6:
         dblog:
           TIME       1602517814.67826
           VALUE      0
       object_result.*value-7:
         dblog:
           TIME       1602517814.67826
           VALUE      0000001000000000
       object_result.*value-8:
         dblog:
           TIME       1602517814.67826
           VALUE      0000000000001000
       object_result.*value-9:
         dblog:
           TIME       1602517814.67826
           VALUE      0000000000000000
   QUEUE:
   READINGS:
     2020-10-12 17:50:14   object_result.*value-1 0
     2020-10-12 17:50:14   object_result.*value-10 0000000000000000
     2020-10-12 17:50:14   object_result.*value-11 1
     2020-10-12 17:50:14   object_result.*value-12 0
     2020-10-12 17:50:14   object_result.*value-13 8.0
     2020-10-12 17:50:14   object_result.*value-14 35.0
     2020-10-12 17:50:14   object_result.*value-15 1
     2020-10-12 17:50:14   object_result.*value-16 15.0
     2020-10-12 17:50:14   object_result.*value-17 35.0
     2020-10-12 17:50:14   object_result.*value-18 27.0
     2020-10-12 17:50:14   object_result.*value-19 33.0
     2020-10-12 17:50:14   object_result.*value-2 1
     2020-10-12 17:50:14   object_result.*value-20 27.0
     2020-10-12 17:50:14   object_result.*value-21 11.0
     2020-10-12 17:50:14   object_result.*value-22 11.0
     2020-10-12 17:50:14   object_result.*value-23 13.0
     2020-10-12 17:50:14   object_result.*value-24 1
     2020-10-12 17:50:14   object_result.*value-3 0
     2020-10-12 17:50:14   object_result.*value-4 33.0
     2020-10-12 17:50:14   object_result.*value-5 0
     2020-10-12 17:50:14   object_result.*value-6 0
     2020-10-12 17:50:14   object_result.*value-7 0000001000000000
     2020-10-12 17:50:14   object_result.*value-8 0000000000001000
     2020-10-12 17:50:14   object_result.*value-9 0000000000000000
   REQUEST:
     data       {"device_code":"xxxxxxxxxx","protocal_codes":["Power","Mode","Manual-mute","Set_Temp","1158","1159","2074","2075","2076","2077","H02","H03","R08","R09","H37","R10","R11","R01","R02","R03","T01","T02","T03","F17"]}
     header     x-token: $sid
Content-Type: application/json
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://cloud.linked-go.com:84/cloudservice/api/app/device/getDataByCode.json
     value      0
   defptr:
     readingBase:
       object_result.*value-1 reading
       object_result.*value-10 reading
       object_result.*value-11 reading
       object_result.*value-12 reading
       object_result.*value-13 reading
       object_result.*value-14 reading
       object_result.*value-15 reading
       object_result.*value-16 reading
       object_result.*value-17 reading
       object_result.*value-18 reading
       object_result.*value-19 reading
       object_result.*value-2 reading
       object_result.*value-20 reading
       object_result.*value-21 reading
       object_result.*value-22 reading
       object_result.*value-23 reading
       object_result.*value-24 reading
       object_result.*value-3 reading
       object_result.*value-4 reading
       object_result.*value-5 reading
       object_result.*value-6 reading
       object_result.*value-7 reading
       object_result.*value-8 reading
       object_result.*value-9 reading
     readingNum:
       object_result.*value-1 01
       object_result.*value-10 01
       object_result.*value-11 01
       object_result.*value-12 01
       object_result.*value-13 01
       object_result.*value-14 01
       object_result.*value-15 01
       object_result.*value-16 01
       object_result.*value-17 01
       object_result.*value-18 01
       object_result.*value-19 01
       object_result.*value-2 01
       object_result.*value-20 01
       object_result.*value-21 01
       object_result.*value-22 01
       object_result.*value-23 01
       object_result.*value-24 01
       object_result.*value-3 01
       object_result.*value-4 01
       object_result.*value-5 01
       object_result.*value-6 01
       object_result.*value-7 01
       object_result.*value-8 01
       object_result.*value-9 01
     readingOutdated:
     readingSubNum:
       object_result.*value-1 -1
       object_result.*value-10 -10
       object_result.*value-11 -11
       object_result.*value-12 -12
       object_result.*value-13 -13
       object_result.*value-14 -14
       object_result.*value-15 -15
       object_result.*value-16 -16
       object_result.*value-17 -17
       object_result.*value-18 -18
       object_result.*value-19 -19
       object_result.*value-2 -2
       object_result.*value-20 -20
       object_result.*value-21 -21
       object_result.*value-22 -22
       object_result.*value-23 -23
       object_result.*value-24 -24
       object_result.*value-3 -3
       object_result.*value-4 -4
       object_result.*value-5 -5
       object_result.*value-6 -6
       object_result.*value-7 -7
       object_result.*value-8 -8
       object_result.*value-9 -9
     requestReadings:
       update:
         object_result.*value-1 reading 01-1
         object_result.*value-10 reading 01-10
         object_result.*value-11 reading 01-11
         object_result.*value-12 reading 01-12
         object_result.*value-13 reading 01-13
         object_result.*value-14 reading 01-14
         object_result.*value-15 reading 01-15
         object_result.*value-16 reading 01-16
         object_result.*value-17 reading 01-17
         object_result.*value-18 reading 01-18
         object_result.*value-19 reading 01-19
         object_result.*value-2 reading 01-2
         object_result.*value-20 reading 01-20
         object_result.*value-21 reading 01-21
         object_result.*value-22 reading 01-22
         object_result.*value-23 reading 01-23
         object_result.*value-24 reading 01-24
         object_result.*value-3 reading 01-3
         object_result.*value-4 reading 01-4
         object_result.*value-5 reading 01-5
         object_result.*value-6 reading 01-6
         object_result.*value-7 reading 01-7
         object_result.*value-8 reading 01-8
         object_result.*value-9 reading 01-9
   sslargs:
     SSL_verify_mode 0
Attributes:
   DbLogExclude state,STATE
   alias      Waermepumpe Detail
   disable    0
   enableControlSet 1
   enableCookies 1
   event-on-change-reading .*
   event-on-update-reading .*
   extractAllJSON 0
   reAuthAlways 0
   reAuthRegex .*(User information is not available|401).*
   reading01JSON object_result.*value
   requestData {"device_code":"xxxxxxxxxxx","protocal_codes":["Power","Mode","Manual-mute","Set_Temp","1158","1159","2074","2075","2076","2077","H02","H03","R08","R09","H37","R10","R11","R01","R02","R03","T01","T02","T03","F17"]}
   requestHeader1 x-token: $sid
   requestHeader2 Content-Type: application/json
   room       Presence
   sid01Data  {"user_name":"xxxxxxxxx","password":"xxxxxxxxx","type":"2"}
   sid01IdJSON object_result_x-token
   sid01URL   http://cloud.linked-go.com:84/cloudservice/api/app/user/login.json
   sidHeader1 Content-Type: application/json
   sslArgs    SSL_verify_mode,0
   userattr   reading01JSON requestData requestHeader1 requestHeader2 sid01Data sid01IdJSON sid01URL sidHeader1
   verbose    5

amenomade

#21
Komisch. Versuche noch "reading01Name test" zu setzen.

Bei mir funktioniert folgendes:
defmod mock3 HTTPMOD https://run.mocky.io/v3/dcb44b78-8793-4011-8ed6-a2a4a5945421 0
attr mock3 reading01JSON object_result.*value
attr mock3 reading01Name testreading


   READINGS:
     2020-10-12 18:32:29   testreading-1   0
     2020-10-12 18:32:29   testreading-10  33.0
     2020-10-12 18:32:29   testreading-11  8.0
     2020-10-12 18:32:29   testreading-12  35.0
     2020-10-12 18:32:29   testreading-13  15.0
     2020-10-12 18:32:29   testreading-14  35.0
     2020-10-12 18:32:29   testreading-15  27.0
     2020-10-12 18:32:29   testreading-16  33.0
     2020-10-12 18:32:29   testreading-17  27.0
     2020-10-12 18:32:29   testreading-18  8.5
     2020-10-12 18:32:29   testreading-19  8.0
     2020-10-12 18:32:29   testreading-2   1
     2020-10-12 18:32:29   testreading-20  9.0
     2020-10-12 18:32:29   testreading-21  0
     2020-10-12 18:32:29   testreading-22  0
     2020-10-12 18:32:29   testreading-23  1
     2020-10-12 18:32:29   testreading-24  1
     2020-10-12 18:32:29   testreading-3   1
     2020-10-12 18:32:29   testreading-4   8.0
     2020-10-12 18:32:29   testreading-5   0000001000000000
     2020-10-12 18:32:29   testreading-6   0000000000001000
     2020-10-12 18:32:29   testreading-7   0000000000000000
     2020-10-12 18:32:29   testreading-8   0000000000000000
     2020-10-12 18:32:29   testreading-9   0


EDIT: Eigentlich funktioniert es doch schon bei dir. Du hast nur keinen Name definiert, dann nimmt er einfach den Wert im reading01JSON Attribut als Name
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

clumsy

Das scheint das Problem zu sein, wenn kein Name gesetzt ist. Nachdem ich nun
attr wp_detail reading01Name Detail
gesetzt habe erhalte ich bei den Readings:
   READINGS:
     2020-10-12 18:37:04   Detail-1        0
     2020-10-12 18:37:04   Detail-10       0000000000000000
     2020-10-12 18:37:04   Detail-11       1
     2020-10-12 18:37:04   Detail-12       0
     2020-10-12 18:37:04   Detail-13       8.0
     2020-10-12 18:37:04   Detail-14       35.0
     2020-10-12 18:37:04   Detail-15       1
     2020-10-12 18:37:04   Detail-16       15.0
     2020-10-12 18:37:04   Detail-17       35.0
     2020-10-12 18:37:04   Detail-18       27.0
     2020-10-12 18:37:04   Detail-19       33.0
     2020-10-12 18:37:04   Detail-2        1
     2020-10-12 18:37:04   Detail-20       27.0
     2020-10-12 18:37:04   Detail-21       10.0
     2020-10-12 18:37:04   Detail-22       10.0
     2020-10-12 18:37:04   Detail-23       11.5
     2020-10-12 18:37:04   Detail-24       1
     2020-10-12 18:37:04   Detail-3        0
     2020-10-12 18:37:04   Detail-4        33.0
     2020-10-12 18:37:04   Detail-5        0
     2020-10-12 18:37:04   Detail-6        0
     2020-10-12 18:37:04   Detail-7        0000001000000000
     2020-10-12 18:37:04   Detail-8        0000000000001000
     2020-10-12 18:37:04   Detail-9        0000000000000000


Was deutlich besser ist ;) Müsste man evtl. abfangen...
Nun schaff ichs aber immer noch nicht den rename der Readings zu machen, das müsste ja eigentlich mit
attr wp_detail Detail-4Name1 Set_Temp
gehen, wenn ich das richig verstehe...

amenomade

#23
defmod mock3 HTTPMOD https://run.mocky.io/v3/dcb44b78-8793-4011-8ed6-a2a4a5945421 0
attr mock3 userattr reading01-01Name reading01-02Name reading01-03Name reading01-04Name reading01-05Name reading01-06Name reading01-07Name reading01-08Name reading01-09Name reading01-10Name reading01-11Name reading01-12Name reading01-13Name reading01-14Name reading01-15Name reading01-16Name reading01-17Name reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01-6Name reading01-7Name reading01-8Name reading01-9Name reading01AutoNumLen reading01JSON reading01Name
attr mock3 enableControlSet 1
attr mock3 reading01-01Name power
attr mock3 reading01-02Name mode
attr mock3 reading01-03Name manual-mute
attr mock3 reading01-04Name t02
attr mock3 reading01-05Name x2074
attr mock3 reading01-06Name x2075
attr mock3 reading01-07Name x2076
attr mock3 reading01-08Name x2077
attr mock3 reading01-09Name h03
attr mock3 reading01-10Name set_temp
attr mock3 reading01-11Name r08
attr mock3 reading01-12Name r09
attr mock3 reading01-13Name r10
attr mock3 reading01-14Name r11
attr mock3 reading01-15Name r01
attr mock3 reading01-16Name r02
attr mock3 reading01-17Name r03
attr mock3 reading01-1Name power
attr mock3 reading01-2Name mode
attr mock3 reading01-3Name manual-mute
attr mock3 reading01-4Name t02
attr mock3 reading01-5Name x2074
attr mock3 reading01-6Name x2075
attr mock3 reading01-7Name x2076
attr mock3 reading01-8Name x2077
attr mock3 reading01-9Name h03
attr mock3 reading01AutoNumLen 2
attr mock3 reading01JSON object_result.*value


   READINGS:
     2020-10-12 18:44:54   h03             0
     2020-10-12 18:44:54   manual-mute     1
     2020-10-12 18:44:54   mode            1
     2020-10-12 18:44:54   object_result.*value-18 8.5
     2020-10-12 18:44:54   object_result.*value-19 8.0
     2020-10-12 18:44:54   object_result.*value-20 9.0
     2020-10-12 18:44:54   object_result.*value-21 0
     2020-10-12 18:44:54   object_result.*value-22 0
     2020-10-12 18:44:54   object_result.*value-23 1
     2020-10-12 18:44:54   object_result.*value-24 1
     2020-10-12 18:44:54   power           0
     2020-10-12 18:44:54   r01             27.0
     2020-10-12 18:44:54   r02             33.0
     2020-10-12 18:44:54   r03             27.0
     2020-10-12 18:44:54   r08             8.0
     2020-10-12 18:44:54   r09             35.0
     2020-10-12 18:44:54   r10             15.0
     2020-10-12 18:44:54   r11             35.0
     2020-10-12 18:44:54   set_temp        33.0
     2020-10-12 18:44:54   t02             8.0
     2020-10-12 18:44:54   x2074           0000001000000000
     2020-10-12 18:44:54   x2075           0000000000001000
     2020-10-12 18:44:54   x2076           0000000000000000
     2020-10-12 18:44:54   x2077           0000000000000000


EDIT: nicht "Detail-4Name1" sondern "reading01-4Name"
Zitat von: amenomade am 12 Oktober 2020, 17:11:13
Die Namen müssen passend zu get/readingXXJSON Attribut gesetzt werden: wenn die Readings mit reading128JSON extrahiert werden, müssen die Attribute reading128-1Name reading128-2Name definiert werden
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

clumsy

Ok, das klappt....

In deinem Code hast du jedes Reading doppelt:
attr mock3 reading01-01Name power
attr mock3 reading01-1Name power


Einmal mit -1 und einmal mit -01 hat das ein bestimmten Grund, welches ist das richitge?

und du hast da auch readings mit der Wildcard drin, ich nehm an das ist vom testen?

Nochmals vielen Dank auf jeden Fall für die Hilfe... Evtl könnte man das mit der Wildcard und dass der Name notwendig ist dokumentiert oder abgefangen werden!!

Gruess!!

STefan

amenomade

Zitat von: clumsy am 12 Oktober 2020, 18:56:15
Ok, das klappt....

In deinem Code hast du jedes Reading doppelt:
attr mock3 reading01-01Name power
attr mock3 reading01-1Name power


Einmal mit -1 und einmal mit -01 hat das ein bestimmten Grund, welches ist das richitge?

Ja sorry, die mit -01 sind falsch, hab ich vergessen zu entfernen. Richtig ist -1

Diejenige, die noch die Regex haben, sind diejenige, die gar keinen Name bekommen haben.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

clumsy

#26
ich hätte noch eine Nachfrage ;)

Unterdessen funktioniert alles ziemlich gut, zumindest beim lesen... Nun bin ich an den set-kommandos. Gibt es da eine möglichkeit direkt ein "reread" zu triggern nachdem ein set befehl ausgeführt wurde, so dass er wieder die aktuellsten Werte abholt? Ich hab weder im Forum noch im Wiki und Commandref das passende gefunden... evtl. überseh ich auch was...

[EDIT]
Dann versuche ich noch "indirekte" Auflösungen von replacements zu machen, d.h. ich hab folgende Readings:
Temp_1
Temp_2
Temp_3
Soll_Temp
Mode_1
Mode_2
Mode 3

Nun habe ich ein set definiert der sowohl den modus wie die soll Temperatur setzen sollte. Das problem ist, dass ich den Wert von Temp_[1-3] benötige, jenachdem welcher Modus dass asugewählt wurde. Ichbekomme nun den $val aus der set definition nicht in die replacement funktion. versucht hab ichs folgendermassen:


attr wp_detail replacement02Mode expression
attr wp_detail replacement02Regex %%Soll_([0-9])%%
attr wp_detail replacement02Value {return(ReadingsVal("wp_detail", "Temp_$1", "0"))}

attr wp_detail set02Data Mode=Mode_$val, Soll=%%Soll_$val%%
attr wp_detail set02Name Mode
attr wp_detail set02URL http://myhost.com/set_url


Bei %%Soll_$val%% wird anscheinend $val erst nach dem replace ersezt und nciht vorher, wenn ich das richtig verstehe...
Evtl. hat mir da jemand auch noch ein tipp...

Besten Dank und Grüsse!

amenomade

Es gibt keinen optimalen Weg, um ein reread nach einem set zu machen, da alle HTTP Requests asynchron laufen, und du deswegen nicht wissen kannst, wann genau das reread gemacht werden muss.

Wegen set Mode: ich würde es irgendwie so machen:

attr wp_detail set02Data %%setData%%
attr wp_detail replacement02Regex %%setData%%
attr wp_detail replacement02Value {my $value = $defs{wp_detail}->{value};; return("Mode=Mode_$value, Soll=".ReadingsVal("wp_detail", "Temp_".$value, "0"))}

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

clumsy

#28
Vielen Dank!!!!

Das  $defs{wp_detail}->{value} war der entscheidende Hinweis, damit kann ich in den replacements auf den aktuell ausgewählten Wert des Set zugriefen!

Bez. dem reread wäre es evtl. möglich wenn set02ParseResponse gesetzt ist, darauf zu reagieren? Wobei das glaub kein event setzt, wenn ich das richtig sehe...
[EDIT]
Habs rad selbst mit einem kleinen "hack" gelöst indem ich eine weitere replacement definiere mit attr wp_detail replacement03Value {fhem("set $name reread");; return("")} und die ans ende der setURL anhänge... damit wird ein reread gescheduled welcher ziemlich kurz danach ausgeführt wird...

Gruess und guten Endspurt ins Wochenende!

STefan

amenomade

Also grundsätzlich führt nur set02ParseResponse dazu, dass das Ergebins vom set Befehl selbst geparst wird. Das ich nicht was Du willst.

Aber Du hast jetzt einen Weg gefunden ;) Ich möchte aber nur hinweisen, dass ein "set httmoddevice reread" auch asynchron gemacht wird. Heisst: Du weisst nicht, wann das Ergebnis in den Readings sichbar wird.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus