[gelöst]Anwendungsbeispiel JsonMod #5: Shelly Firmware eines Shelly Types

Begonnen von supernova1963, 06 April 2020, 19:13:36

Vorheriges Thema - Nächstes Thema

supernova1963

Hallo allen,

ich habe zugegeben die ganzen Info's nicht vollständig gelesen. So ganz verstanden, wie JSONPath funktioniert.
Dennoch hätte ich einen konkreten Anwendungsansatz.
Für die Shellies sind die aktuellen Firmwareversionen hier https://api.shelly.cloud/files/firmware abrufbar.


{"isok":true,"data":{"SHPLG-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHPLG-1_build.zip","version":"20200309-104119\/v1.6.0@43056d58"},"SHPLG-S":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHPLG-S_build.zip","version":"20200309-104506\/v1.6.0@43056d58"},"SHPLG2-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHPLG2-1_build.zip","version":"20200309-104519\/v1.6.0@43056d58"},"SHSW-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-1_build.zip","version":"20200320-123430\/v1.6.2@514044b4"},"SHSW-21":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-21_build.zip","version":"20200309-104038\/v1.6.0@43056d58"},"SHSW-25":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-25_build.zip","version":"20200309-104051\/v1.6.0@43056d58"},"SHSW-PM":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-PM_build.zip","version":"20200312-124223\/v1.6.1@112262fd"},"SHSW-22":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-22_build.zip","version":"20200309-104257\/v1.6.0@43056d58"},"SHSW-44":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSW-44_build.zip","version":"20191216-090307\/v1.5.7@c30657ba"},"SHEM":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHEM_build.zip","version":"20200309-104606\/v1.6.0@43056d58"},"SHEM-3":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHEM-3_build.zip","version":"20200309-104619\/v1.6.0@43056d58"},"SHSEN-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSEN-1_build.zip","version":"20200309-104151\/v1.6.0@43056d58"},"SHSM-01":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHSM-01_build.zip","version":"20200309-104323\/v1.6.0@43056d58"},"SHHT-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHHT-1_build.zip","version":"20200309-104344\/v1.6.0@43056d58"},"SHWT-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHWT-1_build.zip","version":"20200309-104406\/v1.6.0@43056d58"},"SHDW-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHDW-1_build.zip","version":"20200406-083600\/v1.6.3@48847a16"},"SHCL-255":{"url":"http:\/\/api.shelly.cloud\/firmware\/compatibility\/SHCL-255\/0.2.0-73a40eef.zip","version":"20180116-161402\/v0.2.0@73a40eef"},"SHBLB-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHBLB-1_build.zip","version":"20200309-103907\/v1.6.0@43056d58"},"SHRGBW2":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHRGBW2_build.zip","version":"20200309-104453\/v1.6.0@43056d58"},"SHRGBWW-01":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHRGBWW-01_build.zip","version":"20200309-103945\/v1.6.0@43056d58"},"SH2LED-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SH2LED-1_build.zip","version":"20200309-103958\/v1.6.0@43056d58"},"SHDM-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHDM-1_build.zip","version":"20200309-104554\/v1.6.0@43056d58"},"SHVIN-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHVIN-1_build.zip","version":"20200309-103920\/v1.6.0@43056d58"},"SHBDUO-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHBDUO-1_build.zip","version":"20200320-123338\/v1.6.2@514044b4"},"SHBTN-1":{"url":"http:\/\/api.shelly.cloud\/firmware\/SHBTN-1_build.zip","version":"20200309-104440\/v1.6.0@43056d58"}}}


Internals:
   API_LAST_RES 1586192520.10555
   API__LAST_MSG 200
   CFGFN     
   DEF        https://api.shelly.cloud/files/firmware
   FUUID      5e8b5e98-f33f-8c20-5b85-7d9edf152285e1c2
   NAME       shellyfirmware
   NEXT       2020-04-06 19:03:00
   NOTIFYDEV  global
   NR         1148
   NTFY_ORDER 50-shellyfirmware
   SOURCE     https://api.shelly.cloud/files/firmware (200)
   STATE      ???
   SVN        21596 2020-04-04 20:03:11 UTC
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://api.shelly.cloud/files/firmware
     SECRET:
   READINGS:
Attributes:
   interval   */1 * * * *
   readingList jsonPath('data..');


Nach meiner naiven Vorstellung und nach Jayway JsonPath Evaluator sollten die Shelly Typen gelistet werden?
Idealerweise würde das Ergebnis so ähnlich aussehen, wie bei der Nutzung des Umwegs über expandjson (bereits um den die jeweiligen readings x_download und x_otaLink erweitert.

Internals:
   FUUID      5e806cb8-f33f-8c20-68df-3aad6510e0d54dc3
   FVERSION   98_dummy.pm:0.206650/2019-12-06
   NAME       shellyFW
   NR         181
   STATE      Download done!
   TYPE       dummy
   OLDREADINGS:
     2020-04-06 13:46:23   data_SH2LED-1_version 20190309-103958/v1.6.0@43056d58
   READINGS:
     2020-04-06 13:45:06   data_SH2LED-1_download success
     2020-04-06 13:45:06   data_SH2LED-1_name SH2LED-1
     2020-04-06 13:45:06   data_SH2LED-1_otaLink /fhem/shelly/SH2LED-1_build.zip
     2020-04-06 13:44:55   data_SH2LED-1_url http://api.shelly.cloud/firmware/SH2LED-1_build.zip
     2020-04-06 13:47:13   data_SH2LED-1_version 20200309-103958/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHBDUO-1_download success
     2020-04-06 13:45:06   data_SHBDUO-1_name SHBDUO-1
     2020-04-06 13:45:06   data_SHBDUO-1_otaLink /fhem/shelly/SHBDUO-1_build.zip
     2020-04-06 13:44:55   data_SHBDUO-1_url http://api.shelly.cloud/firmware/SHBDUO-1_build.zip
     2020-04-06 13:44:55   data_SHBDUO-1_version 20200320-123338/v1.6.2@514044b4
     2020-04-06 13:45:06   data_SHBLB-1_download success
     2020-04-06 13:45:06   data_SHBLB-1_name SHBLB-1
     2020-04-06 13:45:06   data_SHBLB-1_otaLink /fhem/shelly/SHBLB-1_build.zip
     2020-04-06 13:44:55   data_SHBLB-1_url http://api.shelly.cloud/firmware/SHBLB-1_build.zip
     2020-04-06 13:44:55   data_SHBLB-1_version 20200309-103907/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHCL-255_download success
     2020-04-06 13:45:06   data_SHCL-255_name SHCL-255
     2020-04-06 13:45:06   data_SHCL-255_otaLink /fhem/shelly/SHCL-255_build.zip
     2020-04-06 13:44:55   data_SHCL-255_url http://api.shelly.cloud/firmware/compatibility/SHCL-255/0.2.0-73a40eef.zip
     2020-04-06 13:44:55   data_SHCL-255_version 20180116-161402/v0.2.0@73a40eef
     2020-04-06 13:45:06   data_SHDM-1_download success
     2020-04-06 13:45:06   data_SHDM-1_name SHDM-1
     2020-04-06 13:45:06   data_SHDM-1_otaLink /fhem/shelly/SHDM-1_build.zip
     2020-04-06 13:44:55   data_SHDM-1_url http://api.shelly.cloud/firmware/SHDM-1_build.zip
     2020-04-06 13:44:55   data_SHDM-1_version 20200309-104554/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHDW-1_download success
     2020-04-06 13:45:06   data_SHDW-1_name SHDW-1
     2020-04-06 13:45:06   data_SHDW-1_otaLink /fhem/shelly/SHDW-1_build.zip
     2020-04-06 13:44:55   data_SHDW-1_url http://api.shelly.cloud/firmware/SHDW-1_build.zip
     2020-04-06 13:44:55   data_SHDW-1_version 20191216-090511/v1.5.7@c30657ba
     2020-04-06 13:45:06   data_SHEM-3_download success
     2020-04-06 13:45:06   data_SHEM-3_name SHEM-3
     2020-04-06 13:45:06   data_SHEM-3_otaLink /fhem/shelly/SHEM-3_build.zip
     2020-04-06 13:44:55   data_SHEM-3_url http://api.shelly.cloud/firmware/SHEM-3_build.zip
     2020-04-06 13:44:55   data_SHEM-3_version 20200309-104619/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHEM_download success
     2020-04-06 13:45:06   data_SHEM_name  SHEM
     2020-04-06 13:45:06   data_SHEM_otaLink /fhem/shelly/SHEM_build.zip
     2020-04-06 13:44:55   data_SHEM_url   http://api.shelly.cloud/firmware/SHEM_build.zip
     2020-04-06 13:44:55   data_SHEM_version 20200309-104606/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHHT-1_download success
     2020-04-06 13:45:06   data_SHHT-1_name SHHT-1
     2020-04-06 13:45:06   data_SHHT-1_otaLink /fhem/shelly/SHHT-1_build.zip
     2020-04-06 13:44:55   data_SHHT-1_url http://api.shelly.cloud/firmware/SHHT-1_build.zip
     2020-04-06 13:44:55   data_SHHT-1_version 20200309-104344/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHPLG-1_download success
     2020-04-06 13:45:06   data_SHPLG-1_name SHPLG-1
     2020-04-06 13:45:06   data_SHPLG-1_otaLink /fhem/shelly/SHPLG-1_build.zip
     2020-04-06 13:44:55   data_SHPLG-1_url http://api.shelly.cloud/firmware/SHPLG-1_build.zip
     2020-04-06 13:44:55   data_SHPLG-1_version 20200309-104119/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHPLG-S_download success
     2020-04-06 13:45:06   data_SHPLG-S_name SHPLG-S
     2020-04-06 13:45:06   data_SHPLG-S_otaLink /fhem/shelly/SHPLG-S_build.zip
     2020-04-06 13:44:55   data_SHPLG-S_url http://api.shelly.cloud/firmware/SHPLG-S_build.zip
     2020-04-06 13:44:55   data_SHPLG-S_version 20200309-104506/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHPLG2-1_download success
     2020-04-06 13:45:06   data_SHPLG2-1_name SHPLG2-1
     2020-04-06 13:45:06   data_SHPLG2-1_otaLink /fhem/shelly/SHPLG2-1_build.zip
     2020-04-06 13:44:55   data_SHPLG2-1_url http://api.shelly.cloud/firmware/SHPLG2-1_build.zip
     2020-04-06 13:44:55   data_SHPLG2-1_version 20200309-104519/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHRGBW2_download success
     2020-04-06 13:45:06   data_SHRGBW2_name SHRGBW2
     2020-04-06 13:45:06   data_SHRGBW2_otaLink /fhem/shelly/SHRGBW2_build.zip
     2020-04-06 13:44:55   data_SHRGBW2_url http://api.shelly.cloud/firmware/SHRGBW2_build.zip
     2020-04-06 13:44:55   data_SHRGBW2_version 20200309-104453/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHRGBWW-01_download success
     2020-04-06 13:45:06   data_SHRGBWW-01_name SHRGBWW-01
     2020-04-06 13:45:06   data_SHRGBWW-01_otaLink /fhem/shelly/SHRGBWW-01_build.zip
     2020-04-06 13:44:55   data_SHRGBWW-01_url http://api.shelly.cloud/firmware/SHRGBWW-01_build.zip
     2020-04-06 13:44:55   data_SHRGBWW-01_version 20200309-103945/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSEN-1_download success
     2020-04-06 13:45:06   data_SHSEN-1_name SHSEN-1
     2020-04-06 13:45:06   data_SHSEN-1_otaLink /fhem/shelly/SHSEN-1_build.zip
     2020-04-06 13:44:55   data_SHSEN-1_url http://api.shelly.cloud/firmware/SHSEN-1_build.zip
     2020-04-06 13:44:55   data_SHSEN-1_version 20200309-104151/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSM-01_download success
     2020-04-06 13:45:06   data_SHSM-01_name SHSM-01
     2020-04-06 13:45:06   data_SHSM-01_otaLink /fhem/shelly/SHSM-01_build.zip
     2020-04-06 13:44:55   data_SHSM-01_url http://api.shelly.cloud/firmware/SHSM-01_build.zip
     2020-04-06 13:44:55   data_SHSM-01_version 20200309-104323/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSW-1_download success
     2020-04-06 13:45:06   data_SHSW-1_name SHSW-1
     2020-04-06 13:45:06   data_SHSW-1_otaLink /fhem/shelly/SHSW-1_build.zip
     2020-04-06 13:44:55   data_SHSW-1_url http://api.shelly.cloud/firmware/SHSW-1_build.zip
     2020-04-06 13:44:55   data_SHSW-1_version 20200320-123430/v1.6.2@514044b4
     2020-04-06 13:45:06   data_SHSW-21_download success
     2020-04-06 13:45:06   data_SHSW-21_name SHSW-21
     2020-04-06 13:45:06   data_SHSW-21_otaLink /fhem/shelly/SHSW-21_build.zip
     2020-04-06 13:44:55   data_SHSW-21_url http://api.shelly.cloud/firmware/SHSW-21_build.zip
     2020-04-06 13:44:55   data_SHSW-21_version 20200309-104038/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSW-22_download success
     2020-04-06 13:45:06   data_SHSW-22_name SHSW-22
     2020-04-06 13:45:06   data_SHSW-22_otaLink /fhem/shelly/SHSW-22_build.zip
     2020-04-06 13:44:55   data_SHSW-22_url http://api.shelly.cloud/firmware/SHSW-22_build.zip
     2020-04-06 13:44:55   data_SHSW-22_version 20200309-104257/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSW-25_download success
     2020-04-06 13:45:06   data_SHSW-25_name SHSW-25
     2020-04-06 13:45:06   data_SHSW-25_otaLink /fhem/shelly/SHSW-25_build.zip
     2020-04-06 13:44:55   data_SHSW-25_url http://api.shelly.cloud/firmware/SHSW-25_build.zip
     2020-04-06 13:44:55   data_SHSW-25_version 20200309-104051/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHSW-44_download success
     2020-04-06 13:45:06   data_SHSW-44_name SHSW-44
     2020-04-06 13:45:06   data_SHSW-44_otaLink /fhem/shelly/SHSW-44_build.zip
     2020-04-06 13:44:55   data_SHSW-44_url http://api.shelly.cloud/firmware/SHSW-44_build.zip
     2020-04-06 13:44:55   data_SHSW-44_version 20191216-090307/v1.5.7@c30657ba
     2020-04-06 13:45:06   data_SHSW-PM_download success
     2020-04-06 13:45:06   data_SHSW-PM_name SHSW-PM
     2020-04-06 13:45:06   data_SHSW-PM_otaLink /fhem/shelly/SHSW-PM_build.zip
     2020-04-06 13:44:55   data_SHSW-PM_url http://api.shelly.cloud/firmware/SHSW-PM_build.zip
     2020-04-06 13:44:55   data_SHSW-PM_version 20200312-124223/v1.6.1@112262fd
     2020-04-06 13:45:06   data_SHVIN-1_download success
     2020-04-06 13:45:06   data_SHVIN-1_name SHVIN-1
     2020-04-06 13:45:06   data_SHVIN-1_otaLink /fhem/shelly/SHVIN-1_build.zip
     2020-04-06 13:44:55   data_SHVIN-1_url http://api.shelly.cloud/firmware/SHVIN-1_build.zip
     2020-04-06 13:44:55   data_SHVIN-1_version 20200309-103920/v1.6.0@43056d58
     2020-04-06 13:45:06   data_SHWT-1_download success
     2020-04-06 13:45:06   data_SHWT-1_name SHWT-1
     2020-04-06 13:45:06   data_SHWT-1_otaLink /fhem/shelly/SHWT-1_build.zip
     2020-04-06 13:44:55   data_SHWT-1_url http://api.shelly.cloud/firmware/SHWT-1_build.zip
     2020-04-06 13:44:55   data_SHWT-1_version 20200309-104406/v1.6.0@43056d58
     2020-04-06 13:44:55   isok            1
     2020-04-06 13:45:06   state           Download done!
   helper:
Attributes:
   fw_TargetDir /opt/fhem/www/shelly
   fw_URL     https://api.shelly.cloud/files/firmware
   fw_otaURL  /fhem/shelly
   group      ShellyFW
   oldreadings .*_version
   room       temp
   setList    update:noArg download:noArg
   userattr   fw_URL fw_TargetDir fw_otaURL


Wie sähen die entsprechende Einträge in readingsList aus?

Vielen Dank,

Gernot

herrmannj

kurz, das was ich glaube zu verstehen was Du willst ;) ... geht nicht.

lang: JsonPath kann Listen (Arrays) in eine variable Anzahl readings auflösen. In dem JSON ist aber keine Liste, nur Objekte.

Was geht ist dies:
single(jsonPath('$.data.SHPLG-1.url'),  'SHPLG-1');   -> "http://api.shelly.cloud/firmware/SHPLG-1_build.zip"

Wenn Du _alle_ willst dann musst ist der Weg tatsächlich expandjson

supernova1963

Vielen Dank für die schnelle und konkrete Antwort, herrmannj.

Ja, ich brauche alle für mein Vorhaben, und mit expandjson in Verbindung mit einem at funktioniert es auch.
Die Hoffnung war statt 3 devices mit diesem 1 auszukommen.

lg

Gernot

supernova1963

Der Vollständigkeit halber, die Lösung für den einzelnen Shelly Type:


Internals:
   API_LAST_RES 1586231580.10278
   API__LAST_MSG 200
   CFGFN     
   DEF        https://api.shelly.cloud/files/firmware
   FUUID      5e8b5e98-f33f-8c20-5b85-7d9edf152285e1c2
   NAME       shellyfirmware
   NEXT       2020-04-08 04:00:00
   NOTIFYDEV  global
   NR         1148
   NTFY_ORDER 50-shellyfirmware
   SOURCE     https://api.shelly.cloud/files/firmware (200)
   STATE      ???
   SVN        21596 2020-04-04 20:03:11 UTC
   TYPE       JsonMod
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://api.shelly.cloud/files/firmware
     SECRET:
   OLDREADINGS:
   READINGS:
     2020-04-07 05:53:00   SHPLG-1_url     http://api.shelly.cloud/firmware/SHPLG-1_build.zip
     2020-04-07 05:53:00   SHPLG-1_version 20200309-104119/v1.6.0@43056d58
Attributes:
   interval   0 4 * * *
   readingList single(jsonPath('$.data.SHPLG-1.url'),  'SHPLG-1_url');
single(jsonPath('$.data.SHPLG-1.version'),  'SHPLG-1_version');