JSONMOD + Blöcke im JSON auslesen + multi

Begonnen von fireball, 21 Januar 2024, 16:44:04

Vorheriges Thema - Nächstes Thema

fireball

Hi
nach dem ich ne Weile mit HTTPMOD rumprobiert habe, bin ich jetzt auf JSONMOD gekommen/bzw. auch verwiesen worden, dass es das bessere Modul für mich wäre.

Ich habe ein großes JSON von meinem JalousieHub.
Hier:
{
    "Cloud": {
        "DetailedPublishing": false,
        "EnableFullScheduleTelemetry": false,
        "BlockPublishing": {
            "RoomTimeSeries": false,
            "EcoMode": false,
            "BoilerOnOffEvent": true,
            "HotWaterOnOffEvent": true,
            "PercentageDemand": true,
            "FotaProgress": false,
            "SupportPackage": false,
            "PairingToken": false,
            "Notification": false,
            "Describe": false,
            "EntireDataModel": false,
            "ScheduleUpdate": false,
            "SmartPlugUpdate": false,
            "LightUpdate": false,
            "ShutterUpdate": false,
            "TemperatureChangeEvent": false,
            "EventSeriesDiagnostic": false,
            "Heartbeat": false,
            "AutomationEvent": false,
            "SensorEvent": false,
            "EquipmentConfigEvent": false,
            "EquipmentTimeSeries": false,
            "EquipmentDeletionEvent": false,
            "EVSEActionRequest": false,
            "EquipmentSyncEvent": false,
            "ApplicationPowerEvent": false,
            "WeatherConfigEvent": false,
            "EVSocketChargingStatusChangeEvent": false,
            "EVSocketStatusChangeEvent": false,
            "PCMOnlineNotification": false
        },
        "WiserApiHost": "api-nl.wiserair.com",
        "BootStrapApiHost": "bootstrap.gl.struxurewarecloud.com",
        "FioIsRegistered": true
    },
    "HeatingChannel": [
        {
            "id": 1,
            "Name": "Channel-1",
            "PercentageDemand": 0,
            "DemandOnOffOutput": "Off",
            "HeatingRelayState": "Off",
            "IsSmartValvePreventingDemand": false,
            "DemandIsAsynchronous": true
        }
    ],
    "Room": [
        {
            "id": 1,
            "HeatingRate": 1200,
            "ClimateCapabilities": {
                "HeatingSupported": false,
                "CoolingSupported": false,
                "MinimumHeatSetpoint": 50,
                "MaximumHeatSetpoint": 300,
                "MinimumCoolSetpoint": 180,
                "MaximumCoolSetpoint": 300,
                "SetpointStep": 5,
                "AmbientTemperature": false,
                "TemperatureControl": false,
                "OpenWindowDetection": false,
                "HydronicChannelSelection": false,
                "OnOffSupported": false
            },
            "Name": "Badzimmer unten",
            "Mode": "Manual",
            "WindowDetectionActive": false,
            "OccupiedToUnoccupiedDelay": 5,
            "MinimumOccupiedTime": 20,
            "CalculatedTemperature": -32768,
            "CurrentSetPoint": -200,
            "SetpointOrigin": "FromNoControl",
            "DisplayedSetPoint": -200,
            "Invalid": "NothingAssigned",
            "EffectiveMode": "Manual",
            "ControlDirection": "None",
            "Occupancy": "Occupied",
            "OccupancyCapable": false
        },
        {
            "id": 2,
            "HeatingRate": 1200,
            "ClimateCapabilities": {
                "HeatingSupported": false,
                "CoolingSupported": false,
                "MinimumHeatSetpoint": 50,
                "MaximumHeatSetpoint": 300,
                "MinimumCoolSetpoint": 180,
                "MaximumCoolSetpoint": 300,
                "SetpointStep": 5,
                "AmbientTemperature": false,
                "TemperatureControl": false,
                "OpenWindowDetection": false,
                "HydronicChannelSelection": false,
                "OnOffSupported": false
            },
            "Name": "Badezimmer oben",
            "Mode": "Manual",
            "WindowDetectionActive": false,
            "OccupiedToUnoccupiedDelay": 5,
            "MinimumOccupiedTime": 20,
            "CalculatedTemperature": -32768,
            "CurrentSetPoint": -200,
            "SetpointOrigin": "FromNoControl",
            "DisplayedSetPoint": -200,
            "Invalid": "NothingAssigned",
            "EffectiveMode": "Manual",
            "ControlDirection": "None",
            "Occupancy": "Occupied",
            "OccupancyCapable": false
        }
    ],
    "Device": [
        {
            "id": 0,
            "NodeId": 0,
            "ProductType": "Controller",
            "ProductIdentifier": "Controller",
            "ActiveFirmwareVersion": "4.22.4",
            "ModelIdentifier": "WT704R1B30S4",
            "Type": "ZigbeeDevice",
            "UUID": "b84fc8b0-637b-5515-9acc-052049becb09",
            "DeviceLockEnabled": false,
            "DisplayedSignalStrength": "VeryGood",
            "ReceptionOfController": {
                "Rssi": -55
            }
        },
        {
            "id": 1,
            "NodeId": 15471,
            "ProductType": "Shutter",
            "ProductIdentifier": "C4BShutter",
            "ActiveFirmwareVersion": "2.10.1",
            "ModelIdentifier": "Unknown",
            "SerialNumber": "D0CF5EFFFE440746",
            "ProductModel": "1GANG/SHUTTER/1",
            "OtaImageQueryCount": 0,
            "LastOtaImageQueryCount": 3,
            "OtaVersion": 34210303,
            "OtaHardwareVersion": 256,
            "Type": "ZigbeeDevice",
            "UUID": "b4051c31-cb5b-5f51-884e-df1e716c92f2",
            "DeviceLockEnabled": false,
            "DisplayedSignalStrength": "VeryGood",
            "ReceptionOfController": {
                "Rssi": -32,
                "Lqi": 255
            },
            "BindingsStatus": "SetCorrectly",
            "ReportConfigStatus": "SetCorrectly",
            "AttributesStatus": "SetCorrectly"
        }
    ],
    "Zigbee": {
        "NetworkChannel": 20,
        "TargetEBLFile": "../../opt/efr32/firmware_2.8.0.0.bin",
        "PanId": 62004,
        "ZigbeeModuleVersion": "02.43.00.00",
        "TargetEBLFileUnsigned": "../../opt/efr32/firmware_2.8.0.0.u.bin",
        "NetworkChannelRescan": 11,
        "ZigbeeEUI": "B4E3F9FFFE47CF3A"
    },
    "UpgradeInfo": [
        {
            "id": 1,
            "FirmwareFilename": "105E-0800-00060600-0100-01FF.zigbee"
        },
        {
            "id": 2,
            "FirmwareFilename": "105E-0E00-01080000-0000-00FF.zigbee"
        },
        {
            "id": 3,
            "FirmwareFilename": "105E-0201-0000EA64-0000-0000.zigbee"
        },
        {
            "id": 4,
            "FirmwareFilename": "105E-04E1-0000A412-0000-0009.zigbee"
        },
        {
            "id": 5,
            "FirmwareFilename": "105E-04E1-0000EA63-0100-01FF.zigbee"
        },
        {
            "id": 6,
            "FirmwareFilename": "105E-05E1-00000018-0000-0200.zigbee"
        },
        {
            "id": 7,
            "FirmwareFilename": "105E-0A00-00007D02-0000-0000.zigbee"
        },
        {
            "id": 8,
            "FirmwareFilename": "105E-000B-020A01FF-0100-02FF.zigbee"
        },
        {
            "id": 9,
            "FirmwareFilename": "105E-000C-020A01FF-0100-02FF.zigbee"
        },
        {
            "id": 10,
            "FirmwareFilename": "105E-003F-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 11,
            "FirmwareFilename": "105E-0016-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 12,
            "FirmwareFilename": "105E-003D-020901FF-0000-01FF.zigbee"
        },
        {
            "id": 13,
            "FirmwareFilename": "105E-000D-020C02FF-0000-01FF.zigbee"
        },
        {
            "id": 14,
            "FirmwareFilename": "105E-0010-020A00FF-0000-01FF.zigbee"
        },
        {
            "id": 15,
            "FirmwareFilename": "105E-0011-020B0FFF-0000-02FF.zigbee"
        },
        {
            "id": 16,
            "FirmwareFilename": "105E-0012-020D00FF-0000-01FF.zigbee"
        },
        {
            "id": 17,
            "FirmwareFilename": "105E-04b0-01000400-0000-00FF.zigbee"
        },
        {
            "id": 18,
            "FirmwareFilename": "105E-1200-01003500-0000-00FF.zigbee"
        },
        {
            "id": 19,
            "FirmwareFilename": "105E-1201-01003500-0000-00FF.zigbee"
        },
        {
            "id": 20,
            "FirmwareFilename": "105E-1202-01003500-0000-00FF.zigbee"
        },
        {
            "id": 21,
            "FirmwareFilename": "105E-1203-01003500-0000-00FF.zigbee"
        },
        {
            "id": 22,
            "FirmwareFilename": "105E-1204-01003500-0000-00FF.zigbee"
        },
        {
            "id": 23,
            "FirmwareFilename": "120B-210B-00000022-0000-FFFF.zigbee"
        },
        {
            "id": 24,
            "FirmwareFilename": "105E-0024-01060542-0000-09FF.zigbee"
        },
        {
            "id": 25,
            "FirmwareFilename": "105E-0025-01060542-0000-09FF.zigbee"
        },
        {
            "id": 26,
            "FirmwareFilename": "105E-0026-01060542-0000-09FF.zigbee"
        },
        {
            "id": 27,
            "FirmwareFilename": "105E-0027-01060542-0000-09FF.zigbee"
        },
        {
            "id": 28,
            "FirmwareFilename": "105E-0043-020706FF-0000-0000.zigbee"
        },
        {
            "id": 29,
            "FirmwareFilename": "105E-0051-020A00FF-0000-00FF.zigbee"
        },
        {
            "id": 30,
            "FirmwareFilename": "105E-1401-01040200-020F-02FF.zigbee"
        },
        {
            "id": 31,
            "FirmwareFilename": "105E-1400-01040400-0102-01FF.zigbee"
        },
        {
            "id": 32,
            "FirmwareFilename": "105E-1403-01040200-020F-02FF.zigbee"
        },
        {
            "id": 33,
            "FirmwareFilename": "105E-1402-01040400-0102-01FF.zigbee"
        },
        {
            "id": 34,
            "FirmwareFilename": "105E-0013-020B0FFF-0000-02FF.zigbee"
        }
    ],
    "Shutter": [
        {
            "id": 1,
            "DeviceId": 1,
            "Endpoint": 5,
            "ManualLift": 100,
            "ManualTilt": 255,
            "DriveConfig": {
                "LiftOpenTime": 200,
                "LiftCloseTime": 200,
                "TiltTime": 0,
                "TiltEnabled": false,
                "TiltAngleClosed": 90,
                "TiltAngleOpen": 0
            },
            "UUID": "8d5d5d0c-0f02-58b3-9d26-c6c6bb313513",
            "IsLiftPositionSupported": true,
            "IsTiltSupported": true,
            "Name": "Bad unten",
            "RoomId": 1,
            "Mode": "Manual",
            "AwayAction": "NoChange",
            "RespectSummerComfort": true,
            "SummerComfortLift": 50,
            "SummerComfortTilt": 0,
            "CurrentLift": 100,
            "CurrentTilt": 255,
            "ControlSource": "FromManualMode",
            "TargetLift": 100,
            "TargetTilt": 255,
            "LiftMovement": "Stopped",
            "TiltMovement": "Stopped"
        }
    ],
    "DeviceCapabilityMatrix": {
        "Roomstat": true,
        "ITRV": true,
        "SmartPlug": true,
        "UFH": true,
        "UFHFloorTempSensor": true,
        "UFHDewSensor": true,
        "HACT": false,
        "LACT": false,
        "Light": true,
        "Shutter": true,
        "LoadController": true,
        "SmartSocket": true,
        "TwoGangLights": true,
        "FLS": true,
        "BoilerInterface": true,
        "WindowDoorSensor": true,
        "MotionLightSensor": true,
        "WaterLeakageSensor": true,
        "TemperatureHumiditySensor": true,
        "PowerTagE": true,
        "CFMT": true,
        "EVSE": true,
        "SmokeAlarmDevice": true,
        "Airzone": true,
        "NodOnPuck": true,
        "NodOn16APuck": true,
        "EVSocket": true,
        "FilPilotePuck": true,
        "IconicDevices": true
    },
    "FeatureCapability": {
        "Automation": {
            "MaxActions": 10,
            "MaxTriggers": 10,
            "MaxTimeConstraints": 10
        },
        "PTE": {
            "EnergyExport": true
        },
        "ClimateDemandForUI": true
    },
    "System": {
        "PairingStatus": "Paired",
        "OverrideType": "None",
        "provisionTokenSucceedCount": 1,
        "provisionTokenFailCount": 1179,
        "provisionTokenRequestCount": 1181,
        "TimeZoneOffset": 60,
        "AutomaticDaylightSaving": true,
        "SystemMode": "Heat",
        "FotaEnabled": true,
        "ValveProtectionEnabled": false,
        "AwayModeAffectsHotWater": true,
        "AwayModeSetPointLimit": 160,
        "BoilerSettings": {
            "ControlType": "HeatSourceType_RelayControlled",
            "FuelType": "Gas",
            "CycleRate": "CPH_6",
            "OnOffHysteresis": 5
        },
        "CoolingModeDefaultSetpoint": 210,
        "CoolingAwayModeSetpointLimit": 300,
        "ComfortModeEnabled": false,
        "PreheatTimeLimit": 10800,
        "DegradedModeSetpointThreshold": 180,
        "GeoPosition": {
            "Latitude": 52.3887,
            "Longitude": 10.5333
        },
        "UfhOrphanModeOutput": "On",
        "SummerComfortEnabled": false,
        "IndoorDiscomfortTemperature": 250,
        "OutdoorDiscomfortTemperature": 270,
        "UnixTime": 1705334220,
        "ActiveSystemVersion": "4.22.4-e5fbcf1",
        "BrandName": "WiserHeat",
        "LocalDateAndTime": {
            "Year": 2024,
            "Month": "January",
            "Date": 15,
            "Day": "Monday",
            "Time": 1657
        },
        "HeatingButtonOverrideState": "Off",
        "HotWaterButtonOverrideState": "Off",
        "OpenThermConnectionStatus": "Disconnected",
        "SunriseTimes": [
            826,
            825,
            824,
            824,
            823,
            822,
            821,
            820,
            819,
            818,
            817,
            816,
            815
        ],
        "SunsetTimes": [
            1625,
            1626,
            1628,
            1629,
            1631,
            1632,
            1634,
            1636,
            1637,
            1639,
            1641,
            1642,
            1644
        ],
        "isTrialist": false,
        "isProvisioned": true,
        "HardwareGeneration": 2,
        "SummerDiscomfortPrevention": false,
        "SummerComfortAvailable": false,
        "CloudConnectionStatus": "Connected"
    }
}

Mein Device in FHEM sieht so aus und ein einzelnes Element kann ich auslesen zB CloudConnectionStatus wenn man den vollen Pfad angibt:
Internals:
   API_LAST_MSG 200
   API_LAST_RES 1705850700.16843
   CFGFN     
   DEF        http://192.168.178.112/data/v2/domain/
   FUUID      65a59088-f33f-0804-d6ec-36cacca2687db2d6
   NAME       WiserHub2
   NEXT       2024-01-21 16:30:00
   NR         34631
   SECRETS    Secret, _WiserHub_Secret_
   SOURCE     http://192.168.178.112/data/v2/domain/ (200)
   STATE      ???
   SVN        27933 2023-09-04 13:29:42 UTC
   TYPE       JsonMod
   eventCount 102
   CONFIG:
     IN_REQUEST 0
     SOURCE     http://192.168.178.112/data/v2/domain/
     SECRET:
   READINGS:
     2024-01-21 16:25:00   CloudConnectionStatus Connected
Attributes:
   httpHeader Secret: [_WiserHub_Secret_]
   interval   */5 * * * *
   readingList single(jsonPath('$.System.CloudConnectionStatus'), 'CloudConnectionStatus', 'not_connected');
multi(jsonPath('$.Device.*.[*]'), concat('Device_', $.Device.*.id), property('text'));

   room       WISER

Nun wiederholt sich der Block für Räume, Jalousien(Shutter) und eingiges mehr...

Ich wollte die Geräte "Device" auslesen und alle Eigenschaften haben.
Dafür habe ich in einem JSON-Path Tool, mehrere Einstiegspunkte ausprobiert, aber so richtig hauts nicht hin, viell. kann mir jemand den richtigen Hinweis geben:
Ziel sollte sein, eine Liste der Geräte mit seinen Eigenschaften auszulesen.
Viell so:
Device_1_Eigenschaft = Value
Wobei der Name Device ja von mir gesetzt, die 1 sollte aus der ID vom Device kommen und Eigenschaft am Ende der Name des JSON-Keys unter Device sein...
Weiß aber gar nicht ob das geht oder ob ich nur die Liste der Values auslesen kann, also so:
$.Device.*.*

[
  0,
  0,
  "Controller",
  "Controller",
  "4.22.4",
  "WT704R1B30S4",
  "ZigbeeDevice",
  "b84fc8b0-637b-5515-9acc-052049becb09",
  false,
  "VeryGood",
  {
    "Rssi": -55
  },
  1,
  15471,
  "Shutter",
  "C4BShutter",
  "2.10.1",
  "Unknown",
  "D0CF5EFFFE440746",
  "1GANG/SHUTTER/1",
  0,
  3,
  34210303,
  256,
  "ZigbeeDevice",
  "b4051c31-cb5b-5f51-884e-df1e716c92f2",
  false,
  "VeryGood",
  {
    "Rssi": -32,
    "Lqi": 255
  },
  "SetCorrectly",
  "SetCorrectly",
  "SetCorrectly"
]


Viell. kann mir jemand ne kleinen Anschub geben!?
VG+Danke

TomLee

#1
Hallo,

mit JSONMOD hab ich mich zu wenig bisher mit beschäftigt um zu sagen wie es geht.

Mit json2reading geht es, nicht ganz so wie du das wünschst, aber denke das "schmeckt" auch.
Ich weiß nur nicht wie man die Zahl in dem filter-regexp korrekt angibt (mit \d+ mags nicht), falls alles in einem Device landen soll.
Wenn aber eh einzelne Device gewünscht sind würde das ja passen, dann halt einfach den regexp anpassen.

Direkt angeben sieht folgendermassen aus:

defmod MQTT2_extract at +*00:00:30 {json2reading($defs{$SELF},`cat /opt/fhem/testdevice.json`,undef,undef,undef,"^Device_1.*\$")}
attr MQTT2_extract room Test_json2reading

setstate MQTT2_extract Next: 17:23:14
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_ActiveFirmwareVersion 4.22.4
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_DeviceLockEnabled false
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_DisplayedSignalStrength VeryGood
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_ModelIdentifier WT704R1B30S4
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_NodeId 0
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_ProductIdentifier Controller
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_ProductType Controller
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_ReceptionOfController_Rssi -55
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_Type ZigbeeDevice
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_UUID b84fc8b0-637b-5515-9acc-052049becb09
setstate MQTT2_extract 2024-01-21 17:21:44 Device_1_id 0
setstate MQTT2_extract 2024-01-21 17:22:44 state Next: 17:23:14

betateilchen

Zitat von: fireball am 21 Januar 2024, 16:44:04bin ich jetzt auf JSONMOD gekommen/bzw. auch verwiesen worden, dass es das bessere Modul für mich wäre.

Ich habe ein großes JSON von meinem JalousieHub.

In solchen Fällen empfiehlt es sich, als readingList erstmal "complete()" anzugeben, um zu sehen, welche readings letztlich wie zusammenhängen.
Dein json habe ich mal in eine Textdatei kopiert und getestet.

defmod jsonTest JsonMod file:///tmp/fireball.json
attr jsonTest readingList complete()

Damit werden aus Deinem json ca. 340 readings erzeugt.

Danach schaut man sich die automatisch generierten readings an, die erzeugten Namen geben schon Hinweise, wie man den jsonPath für multi am besten aufbaut und für den Teil begrenzt, den man letztlich haben möchte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Hier mal ein Beispiel für die Extraktion von id und ModelIdentifier:

defmod jsonTest JsonMod file:///tmp/fireball.json
attr jsonTest readingList multi(jsonPath('$.Device.[*]'),concat('device_',count(),'_id'),property('id'))\
multi(jsonPath('$.Device.[*]'),concat('device_',count(),'_ModelIdentifier'),property('ModelIdentifier'))

liefert als readings:

setstate jsonTest 2024-01-21 21:36:59 device_0_ModelIdentifier WT704R1B30S4
setstate jsonTest 2024-01-21 21:36:59 device_0_id 0
setstate jsonTest 2024-01-21 21:36:59 device_1_ModelIdentifier Unknown
setstate jsonTest 2024-01-21 21:36:59 device_1_id 1

Die Beispiele dienen nur zur Darstellung des Prinzips - hoffentlich einigermaßen verständlich.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fireball

Hi Guys,

danke für euer Feedback.
@TomLee, danke für deinen Ansatz, ich nutze aber erstmal den von betateilchen.
@betateilchen, danke für den Hinweis mit complete() und dein Bsp... das ist jetzt ein Ansatz, den ich weiter verfolgen kann. Ich glaube das bringt mich in die richtige Richtung!

VG+Danke

TomLee

Kann bitte trotzdem wer zeigen wie man den Filter-Regexp in json2reading genau anzugeben hat, wenn es beliebig viele (Device)-"Blöcke" geben kann und man zu allen Readings in einem Device erhalten möchte ?

Es geht auch nicht mit [0-9]+, der Filter-Parameter ist doch ein Regulärer Ausdruck !?

betateilchen

Das gehört nicht hierher, in diesem Thread geht es ausdrücklich um die Anwendung von JsonMod - siehe Titel:

ZitatJSONMOD + Blöcke im JSON auslesen + multi
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fireball

Hi betateilchen,

weißt du ob auch mehrere Properties gehen?!
zB:
multi(jsonPath('$.Device.[*]'),concat('device_',count(),'_id'),property('id', 'ModelIdentifier', 'ProductType', 'DisplayedSignalStrength', 'UUID'))
Ich weiß noch nicht ob es für meine Weiterverarbeitung wirklich Sinn macht, aber ich wollte erstmal die Anzahl der Readings reduzieren.
Am Ende habe ich nicht X readings * Y Eigenschaften mit Values, sondern pro Device / Room / Shutter nur ein Reading mit allen Eigenschaften.
OK die muss ich wahrscheinlich dann wieder auseinander nehmen, anstatt einfach mit ReadingsVal/Num drauf zuzugreifen...

Aber selbst wenn mehrere Readings erstellt werden sollen, dann immer pro Value eine Multizeile, wie in deinem Bsp oder kann man das viell. mit einer Multizeile eingrenzen so in meinem Bsp.?!

VG
René

betateilchen

Wenn Du mehrere Werte in EINEM reading haben willst, kannst Du die property() einfach mit concat() verbinden, so wie bei der Konstruktion des readingName

defmod jsonTest JsonMod file:///tmp/fireball.json
attr jsonTest readingList multi(jsonPath('$.Device.[*]'),concat('device_',count()),concat(property('id'),' ',property('ModelIdentifier'),' ',property('DisplayedSignalStrength')))

liefert:

setstate jsonTest 2024-01-22 20:43:43 device_0 0 WT704R1B30S4 VeryGood
setstate jsonTest 2024-01-22 20:43:43 device_1 1 Unknown VeryGood

Grundsätzlich gilt: pro readingName eine multi() Zeile
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

fireball

Hi,

funzt...

Danke für die Hilfe.
single(jsonPath('$.System.CloudConnectionStatus'), 'CloudConnectionStatus', 'not_connected');
multi(jsonPath('$.Device.[*]'),concat('Device_',property('id'),'_id'),concat(property('id'),' ',property('ProductType'),' ',property('DisplayedSignalStrength')))
multi(jsonPath('$.Room.[*]'),concat('Room_',property('id'),'_id'),concat(property('id'),' ',property('Name')))
multi(jsonPath('$.Shutter.[*]'),concat('Shutter_',property('id'),'_id'),concat(property('id'),' ',property('Name')))
multi(jsonPath('$.Moment.[*]'),concat('Moment_',property('id'),'_id'),concat(property('id'),' ',property('Name')))

VG
René

fireball

Hi,

mir ist nochmal was aufgefallen... das JSONMOD verliert immer wieder sein Secret...
Ich habe gesehen, dass es dafür bereits eine Meldung hier im Forum gab, aber es gab scheinbar keine Lösung.
Mit verbose=5 habe ich nochmal ein Secret gesetzt, aber da wird nix rausgeschrieben.

Mein Secret ist 129 Zeichen lang, der Kollege der das berichtete, hat was von "nach 117 Zeichen kommt ein LF" geschrieben.

Wurde das irgendwie nochmal weiter behandelt!?
VG
René

betateilchen

Zitat von: fireball am 04 Februar 2024, 18:36:22das JSONMOD verliert immer wieder sein Secret...

Das ist schlichtweg falsch, JsonMod kann das secret nicht verlieren, weil JsonMod selbst sich das secret gar nicht merkt. Das Problem ist vielmehr, dass JsonMod mit einem gespeicherten secret unter Umständen nicht mehr klarkommt.

Zitat von: fireball am 04 Februar 2024, 18:36:22Wurde das irgendwie nochmal weiter behandelt!?

Solange niemand einen zugehörigen Thread mit einer Problembeschreibung im richtigen Unterforum aufmacht, wird sich vermutlich niemand um das Thema kümmern.

An ein Längenproblem glaube ich übrigens nicht. Vermutlich enthält Dein secret irgendwelche "speziellen" Zeichen, die beim Schreiben und Lesen des secrets nicht korrekt verarbeitet werden.

Es macht überhaupt keinen Sinn, dieses Problem in diesem Thread weiter zu diskutieren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!