FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: bartpl am 04 Februar 2020, 13:04:43

Titel: HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: bartpl am 04 Februar 2020, 13:04:43
Hi,

Ich habe einen Luftsensor von luftdaten.info. Will da direkt die Daten daraus lesen, diese sind über JSON REST Aufruf verfügbar.
Habe dafür bereits diverses mit HTTPMOD ausprobiert, ich komme leider nich zu dem gewünschten Stand:

das Gerät kann über eine lokale IP angesprochen werden und liefert folgenden JSON:
{
    "software_version": "NRZ-2018-123B",
    "age": "47",
    "sensordatavalues": [
        {
            "value_type": "SDS_P1",
            "value": "8.55"
        },
        {
            "value_type": "SDS_P2",
            "value": "3.60"
        },
        {
            "value_type": "BME280_temperature",
            "value": "23.74"
        },
        {
            "value_type": "BME280_humidity",
            "value": "53.09"
        },
        {
            "value_type": "BME280_pressure",
            "value": "96407.30"
        },
        {
            "value_type": "HECA_temperature",
            "value": "23.87"
        },
        {
            "value_type": "HECA_humidity",
            "value": "39.66"
        },
        {
            "value_type": "samples",
            "value": "3211110"
        },
        {
            "value_type": "min_micro",
            "value": "105"
        },
        {
            "value_type": "max_micro",
            "value": "64476"
        },
        {
            "value_type": "signal",
            "value": "-58"
        }
    ]
}


Das Problem ist - jedes Wert ist eine separate Liste in einer Array, das aus value_type und value besteht.

Was ich gerne erreichen würde, wäre: für jedes Eintrag in der sensordatavalues soll ein Reading gestellt werden, dessen Name den value_type entspricht, und wert den value. Wie kann ich das am einfachsten auf die Reihe kriegen?

habe versucht mit extractAllJSON und extractAllJSONFilter versucht aber die Namen kriege ich nicht aus dem Inhalt rausgelesen...
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: KölnSolar am 04 Februar 2020, 13:12:34
Warum httpmod und nicht LuftDatenInfo ?
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: bartpl am 04 Februar 2020, 13:21:30
Ich will direkt aus dem Sensor die Daten bekommen, sollte das Netz nicht verfügbar sein...
Die Frage ist aber denke ich allgemein wichtig - wie kann ich Namen und Werte für dynamisch erstellte Readings aus einer unsorteierten Liste extrahieren?
in Perl würde ich eine foreach schleife machen, und ein setreading machen wo ich Name aus einen Parameter nehme und Wert aus anderen. Leider hier finde ich keinen eleganten Weg das zu schaffen ohne ins Perl einzutauchen und eigene Module zu schreiben.
Das wird besonders kompliziert, wenn die Reihenfolge zufällig ist...

Ein ähnliches Beispiel hatte ich erlebt als ich versucht habe die Daten aus MQTT output von Domoticz rauszuparsen. Es shickt immer ein Array das Parameter Name und dessen Wert beinhaltet. Und nur diesen einzelnen Array. Wenn ein neues aktualisiert wird, dann schickt domoticz nur den anderen... Habe versucht das so ins multiple readings zu zerlegen, habe aber geschaltert. Inwzischen habe ich domoticz komplett mit fhem abgelößt und das Problem habe ich nicht mehr. Aber als Use Case denke ich es wäre gut dafür eine Lösung zu haben. Vielleicht ist einfach mein fhem voodoo zu klein um das schön und elegant zu lösen, wie z.B. mit extractAllJSON...
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: yersinia am 04 Februar 2020, 13:28:54
Mal doof gefragt: sollte nicht extractAllJSON gehen (https://fhem.de/commandref.html#HTTPMOD)?
ZitatIf you don't care about the naming of your readings, you can simply extract all JSON data with
    attr test2 extractAllJSON 1
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: bartpl am 04 Februar 2020, 13:37:06
es funktioniert, leider die Namen sind generisch und nicht einzuordnen:
Internals:
   BUSY       0
   CFGFN     
   DEF        http://192.168.3.3/data.json 600
   FUUID      5e396414-f33f-8de5-5505-70f96364fa5f43da
   Interval   600
   JSONEnabled 1
   LASTSEND   1580819503.58799
   MainURL    http://192.168.3.3/data.json
   ModuleVersion 3.5.21 - 27.12.2019
   NAME       SmogMelder
   NOTIFYDEV  global
   NR         24175
   NTFY_ORDER 50-SmogMelder
   STATE      ???
   TRIGGERTIME 1580820078.84346
   TRIGGERTIME_FMT 2020-02-04 13:41:18
   TYPE       HTTPMOD
   addr       http://192.168.3.3:80
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.3.3/data.json
   header     
   host       192.168.3.3
   httpheader HTTP/1.1 200 OK
Server: nginx
Date: Tue, 04 Feb 2020 12:31:43 GMT
Content-Type: application/json
Content-Length: 1092
Connection: close
Vary: Accept-Encoding
Last-Modified: Tue, 04 Feb 2020 09:44:22 GMT
ETag: "5e393cf6-444"
Accept-Ranges: bytes
   httpversion 1.0
   hu_blocking 0
   hu_filecount 2
   hu_port    80
   hu_portSfx
   ignoreredirects 1
   loglevel   4
   path       /data.json
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.3.3/data.json
   value      0
   QUEUE:
   READINGS:
     2020-02-04 13:31:43   age             47
     2020-02-04 13:31:43   sensordatavalues_01_value 8.55
     2020-02-04 13:31:43   sensordatavalues_01_value_type SDS_P1
     2020-02-04 13:31:43   sensordatavalues_02_value 3.60
     2020-02-04 13:31:43   sensordatavalues_02_value_type SDS_P2
     2020-02-04 13:31:43   sensordatavalues_03_value 23.74
     2020-02-04 13:31:43   sensordatavalues_03_value_type BME280_temperature
     2020-02-04 13:31:43   sensordatavalues_04_value 53.09
     2020-02-04 13:31:43   sensordatavalues_04_value_type BME280_humidity
     2020-02-04 13:31:43   sensordatavalues_05_value 96407.30
     2020-02-04 13:31:43   sensordatavalues_05_value_type BME280_pressure
     2020-02-04 13:31:43   sensordatavalues_06_value 23.87
     2020-02-04 13:31:43   sensordatavalues_06_value_type HECA_temperature
     2020-02-04 13:31:43   sensordatavalues_07_value 39.66
     2020-02-04 13:31:43   sensordatavalues_07_value_type HECA_humidity
     2020-02-04 13:31:43   sensordatavalues_08_value 3211110
     2020-02-04 13:31:43   sensordatavalues_08_value_type samples
     2020-02-04 13:31:43   sensordatavalues_09_value 105
     2020-02-04 13:31:43   sensordatavalues_09_value_type min_micro
     2020-02-04 13:31:43   sensordatavalues_10_value 64476
     2020-02-04 13:31:43   sensordatavalues_10_value_type max_micro
     2020-02-04 13:31:43   sensordatavalues_11_value -58
     2020-02-04 13:31:43   sensordatavalues_11_value_type signal
     2020-02-04 13:31:43   software_version NRZ-2018-123B
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.3.3/data.json
     value      0
   defptr:
     readingBase:
       age        reading
       sensordatavalues_01_value reading
       sensordatavalues_01_value_type reading
       sensordatavalues_02_value reading
       sensordatavalues_02_value_type reading
       sensordatavalues_03_value reading
       sensordatavalues_03_value_type reading
       sensordatavalues_04_value reading
       sensordatavalues_04_value_type reading
       sensordatavalues_05_value reading
       sensordatavalues_05_value_type reading
       sensordatavalues_06_value reading
       sensordatavalues_06_value_type reading
       sensordatavalues_07_value reading
       sensordatavalues_07_value_type reading
       sensordatavalues_08_value reading
       sensordatavalues_08_value_type reading
       sensordatavalues_09_value reading
       sensordatavalues_09_value_type reading
       sensordatavalues_10_value reading
       sensordatavalues_10_value_type reading
       sensordatavalues_11_value reading
       sensordatavalues_11_value_type reading
       software_version reading
     readingNum:
       age       
       sensordatavalues_01_value
       sensordatavalues_01_value_type
       sensordatavalues_02_value
       sensordatavalues_02_value_type
       sensordatavalues_03_value
       sensordatavalues_03_value_type
       sensordatavalues_04_value
       sensordatavalues_04_value_type
       sensordatavalues_05_value
       sensordatavalues_05_value_type
       sensordatavalues_06_value
       sensordatavalues_06_value_type
       sensordatavalues_07_value
       sensordatavalues_07_value_type
       sensordatavalues_08_value
       sensordatavalues_08_value_type
       sensordatavalues_09_value
       sensordatavalues_09_value_type
       sensordatavalues_10_value
       sensordatavalues_10_value_type
       sensordatavalues_11_value
       sensordatavalues_11_value_type
       software_version
     readingOutdated:
     requestReadings:
       update:
         age        reading
         sensordatavalues_01_value reading
         sensordatavalues_01_value_type reading
         sensordatavalues_02_value reading
         sensordatavalues_02_value_type reading
         sensordatavalues_03_value reading
         sensordatavalues_03_value_type reading
         sensordatavalues_04_value reading
         sensordatavalues_04_value_type reading
         sensordatavalues_05_value reading
         sensordatavalues_05_value_type reading
         sensordatavalues_06_value reading
         sensordatavalues_06_value_type reading
         sensordatavalues_07_value reading
         sensordatavalues_07_value_type reading
         sensordatavalues_08_value reading
         sensordatavalues_08_value_type reading
         sensordatavalues_09_value reading
         sensordatavalues_09_value_type reading
         sensordatavalues_10_value reading
         sensordatavalues_10_value_type reading
         sensordatavalues_11_value reading
         sensordatavalues_11_value_type reading
         software_version reading
   sslargs:
Attributes:
   enforceGoodReadingNames 1
   extractAllJSON 1


Was ich gerne hätte wäre für alles unter sensordatavalues das es analog zu age oder software_version aussieht.
Dafür müsste es aber für jedne Eintrag der JSON Tabelle die Name des readings aus value_type ziehen, und den Inhalt aus value.

Ich hätte mal gerne so etwas:
   READINGS:
     2020-02-04 13:31:43   age 47
     2020-02-04 13:31:43   SDS_P1 8.55
     2020-02-04 13:31:43   SDS_P2 3.60
     2020-02-04 13:31:43   BME280_temperature 23.74
     2020-02-04 13:31:43   BME280_humidity 53.09
     2020-02-04 13:31:43   BME280_pressure 96407.30
...

Das schaffe ich leider nicht generisch zu schaffen.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: KölnSolar am 04 Februar 2020, 13:40:10
ZitatIch will direkt aus dem Sensor die Daten bekommen, sollte das Netz nicht verfügbar sein...
Ägypten ?
Du meinst das Inet und nicht WLAN mit Netz ?
Dann mach das doch mit define Deindevicename LuftdatenInfo local IPdesSensors  ???
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: bartpl am 04 Februar 2020, 14:08:40
Hmm - darauf bin ich nicht gekommen :) Danke! Das ist noch eleganter :)
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: Christoph Morrison am 04 Februar 2020, 14:14:56
Zitat von: KölnSolar am 04 Februar 2020, 13:40:10
Dann mach das doch mit define Deindevicename LuftdatenInfo local IPdesSensors  ???

Um das kurz zu konkretisieren:
LuftdatenInfo hat drei Betriebsmodi. Im remote-Modus holt das Modul die Daten aus dem Interwebs, im local-Modus holt es die Daten direkt von deinem Sensor. Hast du mehrere Sensoren angeschlossen, gibt es noch den slave-Modus, bei dem für jeden Sensor (bzw. für jeden Datenpunkt eines Sensors) ein eigenes Device erstellt werden kann. So habe ich zum Beispiel einen modifizierten Sensor mit dem SDS011, einem BME680 und einem DHT22 (teilweise redundant, aber nicht tragisch) im Betrieb. Es gibt bei mir dann vier Devices: Ein Device im local-Modus und drei Devices im slave-Modus. Ich übertrage gar keine Daten an Dritte.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: bartpl am 04 Februar 2020, 14:41:10
Vielen Dank an alle! Ich denke dieses Thema kann zugemacht werden.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: KölnSolar am 04 Februar 2020, 16:29:15
Das kannst Du selbst mit dem Button links unten. Muss aber nicht sein. Wichtiger wäre in Deinem 1. Post den Betreff mit einem [gelöst] zu ergänzen.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 11 Oktober 2020, 09:49:15
Hallo zusammen

Ich habe ein ähnliches Problem, an dem ich mir seit Tagen die Zähne ausbeisse. Ich lese mit HTTPMOD meine Wärmepumpe aus, dies mit mehreren get[0-9]+URL's. Leider kommt in der JSON Antwort das Resultat immer in einem Array namens "object_result" zurück. Das führt bei mehreren URL's dazu dass die Resultate (zufällig) nummeriert werden (jeweils mit "object_result-[0-9]+" als Reading Name. Dazu kommt, dass einige der Werte in einem Code/Value Paar daherkommen. (Beispiele unten).

Nun meine Fragen/Ideen:
- Gibt es eine Möglichkeit bei ExtractALLJSON den get[0-9]+Name voranzustellen, so dass die verschiedenen readings aus den get's eineindeutig werden?
- Gibt es eine Möglichkeit automatisiert aus Code/Value Paaren ein Reading mit Code als Name und Wert Value zu generieren?

Vielen Dank und Grüsse aus der CH

STefan

get01 liefert:
Body: {
  "error_code" : "0",
  "error_msg" : "Success",
  "error_msg_code" : "",
  "object_result" : {
    "is_fault" : true,
    "status" : "ONLINE"
  },
  "is_reuslt_suc" : true
}



get02 liefert:
Body: {
  "error_code" : "0",
  "error_msg" : "Success",
  "error_msg_code" : "",
  "object_result" : [ {
    "code" : "Power",
    "value" : "0"
  }, {
    "code" : "Mode",
    "value" : "1"
  }, {
    "code" : "Manual-mute",
    "value" : "1"
  }, {
    "code" : "T02",
    "value" : "8.0"
  }, {
    "code" : "2074",
    "value" : "0000001000000000"
  }, {
    "code" : "2075",
    "value" : "0000000000001000"
  }, {
    "code" : "2076",
    "value" : "0000000000000000"
  }, {
    "code" : "2077",
    "value" : "0000000000000000"
  }, {
    "code" : "H03",
    "value" : "0"
  }, {
    "code" : "Set_Temp",
    "value" : "33.0"
  }, {
    "code" : "R08",
    "value" : "8.0"
  }, {
    "code" : "R09",
    "value" : "35.0"
  }, {
    "code" : "R10",
    "value" : "15.0"
  }, {
    "code" : "R11",
    "value" : "35.0"
  }, {
    "code" : "R01",
    "value" : "27.0"
  }, {
    "code" : "R02",
    "value" : "33.0"
  }, {
    "code" : "R03",
    "value" : "27.0"
  }, {
    "code" : "T01",
    "value" : "8.5"
  }, {
    "code" : "T02",
    "value" : "8.0"
  }, {
    "code" : "T03",
    "value" : "9.0"
  }, {
    "code" : "1158",
    "value" : "0"
  }, {
    "code" : "1159",
    "value" : "0"
  }, {
    "code" : "F17",
    "value" : "1"
  }, {
    "code" : "H02",
    "value" : "1"
  } ],
  "is_reuslt_suc" : true
}
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 11 Oktober 2020, 13:34:49
ZitatGibt es eine Möglichkeit bei ExtractALLJSON den get[0-9]+Name voranzustellen, so dass die verschiedenen readings aus den get's eineindeutig werden?
Bei extractAllJSON kann man nichts beeinflüssen. Dafür musst Du einzelne Readings erstellen (mit (get|reading)XXJSON, und die wie gewünscht benennen
ZitatGibt es eine Möglichkeit automatisiert aus Code/Value Paaren ein Reading mit Code als Name und Wert Value zu generieren?
Nein, zumindest nicht ohne Nacharbeit über userReadings oder so.
Aber wenn die immer in der gleichen Reihenfolge kommen, kennst Du schon die Namen anhand der Position. Wenn die Reihenfolge zufällig ist, ist es einfacher über readingXXRegex zu gehen.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 07:42:12
Danke für die prompte Antwort!!

Dann komm ich wohl nicht drum herum das per einzeln Hand zu definieren..

Evtl. als Anregung für eine zukünftige Version, dass man bei ExtractAllJSON so eine Art "Prefix" angeben kann. (z.b. als Attribut), das dann bei allen readings vorangestellt wird, so könnte man es bei mehreren get's relativ einfach eineindeutig machen...

Nochmals Danke und guten Start in die Woche!

STefan
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 12 Oktober 2020, 10:27:32
Zitat von: clumsy am 12 Oktober 2020, 07:42:12
Danke für die prompte Antwort!!

Dann komm ich wohl nicht drum herum das per einzeln Hand zu definieren..

Evtl. als Anregung für eine zukünftige Version, dass man bei ExtractAllJSON so eine Art "Prefix" angeben kann. (z.b. als Attribut), das dann bei allen readings vorangestellt wird, so könnte man es bei mehreren get's relativ einfach eineindeutig machen...

Nochmals Danke und guten Start in die Woche!

STefan
Naja... man muss nicht unbedingt alles einzeln definieren: man kann auch extractAllJSON auf 2 setzen, und er erstellt selbst die einzelne Readings. Dann kann man löschen was man nicht braucht
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
Und dann macht man ein reading01-1Name power
reading01-2Name mode
reading01-3Name manual-mute
...
um die umzubenennen. Das ist was ich mit "wenn die immer in der gleichen Reihenfolge kommen, kennst Du schon die Namen anhand der Position." meinte
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 10:38:13
Das wäre tatsächlich eine Zwischenvariante die einigermassen machbar ist vom Aufwand. Mein Problem ist, dass ich in 6 get's jeweils zwischen 5 und 20 "object_result" erhalte, welche aber nicht zwingend in der Reihenfolge reproduzierbar sind. Abgesehen davon erhalte ich auch noch zusätzliche Infos ausserhalb vom "object_result".

Auf jeden Fall Danke für die Detaillierung und Hilfe, ich werd nochmals den Kopf rauchen lassen, welchen Weg ich gehe ;)

Grüsse aus der CH!

STefan

Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 12 Oktober 2020, 10:41:38
Dann ist vielleicht doch "getXXExtractAllJSON 2" etwas für dich. In der raw DEF ist es dann relativ einfach, die Sachen umzubenennen
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 12:39:36
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...
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 14:04:05
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_\.-)
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag 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

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)
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 17:37:10
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

Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 17:54:50
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
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 12 Oktober 2020, 18:34:42
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
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 12 Oktober 2020, 18:41:46
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...
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 12 Oktober 2020, 18:46:09
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
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag 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?

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
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 12 Oktober 2020, 20:56:31
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.
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 14 Oktober 2020, 14:03:56
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!
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 15 Oktober 2020, 01:09:46
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"))}

Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: clumsy am 15 Oktober 2020, 08:49:01
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
Titel: Antw:HTTPMOD - readings namen aus dem Inhalt rauslesen (luftdaten.info)
Beitrag von: amenomade am 15 Oktober 2020, 18:08:22
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.