App Email
: Your APP Username (eMail)App Password
: Your APP PasswordApp Name
: Choose your deviceUpdate interval in minutes
Interval to update all data (Range from 10 to 1440 possible)Delay for EdgeCut
: When should EdgeCut start (example 5 seconds to lawn)Distance and time in min and m
: Default h and kmUpdating MQTT data after token update.
: Loads the Worx data after the refresh token.
activityLog
: Your activity log (Wire & Vision / control possible)areas
: Areas (Wire / control possible)multiZones
: Multizones (Vision / control possible)calendar
: Time schedule (Wire & Vision / control possible)Modules
: Your module(s) (Wire & Vision / control possible)mower
: Your mower (Wire & Vision / control possible)product
: All properties of device (Wire & Vision / readonly)rawMqtt
: All data from the cloud (Wire & Vision / readonly)
last_update
: Last update as timestamp (Wire & Vision / readonly)manuell_update
: Loads the current activity log (automatically after status changes - Wire & Vision / control possible)payload
: Activity log as JSON Table (for VIS or Blockly)
actualArea
: CurrentactualAreaIndicator
: Next array zone startarea_0
: Start of zone 1 in meters (array=0) (changeable)area_1
: Start of zone 2 in meters (array=1) (changeable)area_2
: Start of zone 3 in meters (array=2) (changeable)area_3
: Start of zone 4 in meters (array=3) (changeable)startSequence
: Array zone start (0-9 events) e.g. Start in Zone 3 only [2,2,2,2,2,2,2,2,2,2] (changeable)zoneKeeper
: Safe driving in narrow zone crossings (Areas must be created) (as of Firmware 3.30) (changeable)
-
E.g. time setting for wednesday
wednesday.borderCut
: With or without bordercut (Change value without delay) (changeable)wednesday.startTime
: Starttime hh:mm (0-23/0-59) e.g. 09:00 (Change value without delay) (changeable)wednesday.workTime
: Working time in minutes (180 min = 3h) e.g. 30 = endtime 09:30 (Change value without delay) (changeable)calJson_sendto
: If all States are set, then press button to send (with a 1,1 second delay). The mower will now mow for 30 minutes (changeable)calJson_tosend
: This data is sent to Mqtt (Both mowing schedule/is set automatically). You can also create this JSON yourself. (changeable)calendar.calJson
: Array for the weekly mowing plan. You can also create this ARRAY yourself. (mowing schedule 1/is set automatically - for wire only) (changeable)calendar.calJson2
: Array for the weekly mowing plan. You can also create this ARRAY yourself. (mowing schedule 2/is set automatically - for wire only) (changeable)
-
E.g. time setting for friday
-
As standard, 2 timeslots are created. If 3 slots are created in the APP, 3 will also be created in ioBroker. If it is reduced again to 2, these slots will be deleted in ioBroker. The day with the most slots is used as a reference for all days.
friday.time_0.borderCut
: With or without bordercut (Change value without delay) (changeable)friday.time_0.startTime
: Starttime hh:mm (0-23/0-59) e.g. 09:00 (Change value without delay) (changeable)friday.time_0.workTime
: Working time in minutes (180 min = 3h) e.g. 30 = Endtime 09:30 (Change value without delay) (changeable)friday.time_0.enabled_time
: Activate or deactivate time. (set without delay) (can be changed)friday.time_0.zones
: Which zones should be approached, e.g. Example [1,2,3] (set without delay) (can be changed)calJson_sendto
: If all States are set then set this button to true (with a delay of 1.1). The mower will now mow for 30 minutes! (changeable)calJson_tosend
: This JSON is automatically filled and then sent to Mqtt. Of course you can also create it yourself. (changeable)add_timeslot
: An additional timeslot is added. Unused timeslots are removed after a restart. (changeable)
calJson_tosend
This JSON would enter 1 time on Sunday and delete all other days. The entire week must always be submitted.
[
{
"e": 1, // 0=deactivated/1=activated - Set 0 for deactivated this slot
"d": 0, // Days 0=sunday, 1=monday, 2=tuesday, 3=wednesday, 4=thursday, 5=friday, 6=saturday
"s": 360, // Start time in minutes 06:00 (360/60) - (320/60 = 5 hours and 20 minutes)
"t": 180, // Mowing time in minutes = End time 09:00 (180/60) - (200/60 = 3 hours and 20 minutes)
"cfg": {
"cut": {
"b": 1, // 0=without BorderCut/1=with BorderCut
"z": [1] // Which zones [1,2,6]
}
}
}
]
-
Off Limit Module (Wire and Vision)
DF.OLMSwitch_Cutting
: Prevents magnetic tape from being run over - true-on/false-offDF.OLMSwitch_FastHoming
: Fast return to the charging station - using shortcuts made from magnetic strips - true-on/false-off
-
ACS Module (Wire only)
US.ACS
: Enable or disable ACS - 1-on/0-offUS.ACS_Status
: Status from ACS Module
-
EA Module (Vision only)
EA.height
: Height adjustment of mower deck from 30-60 in 5 mm increments
-
HL Module (Vision only)
HL.status
: Status head lightHL.enabled
: Head light installed yes = 1/no = 0HL.on
: Daylight = 0/Darkness = 1
AutoLock
: Auto lock true-on/false-off (wire & Vision/changeable)AutoLockTimer
: Timer auto lock max. 10 minutes in 30 second steps (wire & Vision/changeable)batteryChargeCycle
: Battery charge cycle (wire & Vision/readonly)batteryCharging
: Battery charging false->no/true->yes (wire & Vision/readonly)batteryState
: Battery state in % (wire & Vision/readonly)batteryTemperature
: Battery temperature in celsius (wire & Vision/readonly)batteryVoltage
: Battery voltage in Volt (wire & Vision/readonly)cameraStatus
: Status Camera 0=OK/1=Error (Vision/readonly)cameraError
: Camera error 0=OK/1=Error (Vision/readonly)cutOverSlabs
: Cut over slabs on = true / off = false (Vision/changeable)direction
: Direction in degrees (wire & Vision/readonly)edgecut
: Start EdgeCut (wire & Vision/changeable)error
: Error message from mower (wire & Vision/readonly)
{
"states": {
"0": "No error", //(Draht & Vision & RTK)
"1": "Trapped", //(Draht & Vision & RTK-Body)
"2": "Lifted", //(Draht & Vision & RTK-Body)
"3": "Wire missing", //(Draht)
"4": "Outside boundary", //(Draht & Vision & RTK-Body)
"5": "Raining", //(Draht & Vision & RTK-Body)
"6": "Close door to cut grass", //(Draht)
"7": "Close door to go home", //(Draht)
"8": "Blade motor fault", //(Draht & Vision & RTK-Body)
"9": "Wheel motor fault", //(Draht & Vision & RTK-Body)
"10": "Trapped timeout fault", //(Draht & Vision & RTK-Body)
"11": "Upside down", //(Draht & Vision & RTK-Body)
"12": "Battery low", //(Draht & Vision & RTK)
"13": "Wire reversed", //(Draht)
"14": "Charge error", //(Draht & Vision & RTK-Body)
"15": "Home search timeout", //(Draht & Vision)
"16": "Wifi locked", //(Draht & Vision)
"17": "Battery over temperature", //(Draht & Vision & RTK)
"18": "Dummy model", //(Draht)
"19": "Battery trunk open timeout", //(Draht & Vision)
"20": "Wire signal out of sync", //(Draht)
"100": "Charging station docking error", //(RTK-Body)
"101": "HBI error", //(RTK-Body)
"102": "OTA upgrade error", //(Vision & RTK)
"103": "Map error", //(RTK)
"104": "Excessive slope", //(RTK-Body)
"105": "Unreachable zone", //(RTK-Body)
"106": "Unreachable charging station", //(RTK-Body)
"107": "Calibration needed", //(RTK-Head)
"108": "Insufficient sensor data", //(RTK)
"109": "Training start disallowed", //(RTK)
"110": "Camera error", //(Vision)
"111": "Lawn exploration required", //(Vision)
"112": "Mapping exploration failed", //(Vision)
"113": "RFID reader error", //(Vision)
"114": "Headlight error", //(Vision)
"115": "Missing charging station", //(RTK-Body)
"116": "Blade height adjustment blocked", //(Vision & RTK-Body)
"117": "Unsupported blade height", //(Vision & RTK-Body)
"118": "Manual firrnware upgrade required", //(Vision & RTK-Body)
"119": "Area limit exceeded", //(RTK-Body)
"120": "Charging station undocking error" //(RTK-Body)
}
}
firmware
: Current installed firmware (wire & Vision/readonly)firmware_available
: Available firmware (wire & Vision/readonly)firmware_available_all
: Last available firmware as JSON - This JSON will be updated when a new update is available (wire & Vision/readonly)
{
"mandatory": false,
"product": {
"uuid": "1236ll8d-0000-0000-9999-07ff6690003f",
"version": "3.30.0+1",
"released_at": "2023-05-24",
"changelog": "•\tSupport for new models \tWR166E and WR184E\n•\tImproved Grass cutting coverage\n•\tImproved ACS\n•\tAdded Zone Keeper function (need to be enabled by app)\n•\tImproved wheel torque algorithm\n• \tNew FML firmware\n•\tFixed \"FML\" and \"Radiolink\" Activation problem\n•\tFixed some translations error\n•\tRain delay can now be cleared pressing START / HOME button, (1 minute after countdown has started)\n•\tImproved PRO Battery management\n• \tImproved boundary wire recognition\n• \tFixed border cut when zones are active\n• \tNew wifi firmware for board HW REV > 7\n\nThe Worx Landroid team would like to thank our amazing beta testers, with hundreds of hours of their own free time to make this firmware possible."
}
}
firmware_available_date
: Date available firmware - Dummy 1970-01-01 when the adapter is reinstalled and no update is available (wire & Vision/readonly)firmware_body
Value from dat.fw (Vision/readonly)firmware_head
Value from dat.head.fw (Vision/readonly)firmware_update_start
: Start firmware update in 2 steps - see belowfirmware_update_start_approved
(wire & Vision/changeable)firmware_update_start_approved
: Start firmware update -firmware_update_start
must be set to true (wire & Vision/changeable)gradient
: Gradient in degrees (wire & Vision/readonly)inclination
: Inclination in degrees (wire & Vision/readonly)last_command
: Last Request from iobroker or APP as JSON Table (wire & Vision/readonly)last_update
Last update (wire & Vision/readonly)last_update_connection
Which connection (Mqtt or Cloud / wire & Vision/readonly)mowTimeExtend
: Mow time extend in % Range: -100%->100% (wire/changeable)mowerActive
: Pause mowing plan (wire/changeable)mqtt_update
: Update Mqtt data max. 150/day (wire & Vision/changeable)mqtt_update_count
: Counter Update Mqtt data (wire & Vision/readonly)
oneTimeJson
: One-time mowing as JSON (wire & Vision/changeable)
{
"wtm": 60, //Minutes
"bc": 0 //0=w/o bordercut 1=with bordercut or use the next State
}
oneTimeStart
: One-time mowing start “First set oneTimeWithBorder, oneTimeWorkTime and oneTimeZones for Vision” - with a 1,1 second delay (wire & Vision/changeable)oneTimeWithBorder
: With bordercut - Change value without delay (wire & Vision/changeable)oneTimeWorkTime
: Worktime max. 8h in 30 minute steps - Change value without delay (wire & Vision/changeable)oneTimeZones
: Set zones [1,2,4] (Vision/changeable)online
: Mower online (wire & Vision/readonly)partyModus
: Partymodus turn on/off (wire & Vision/changeable)pause
: Mower break turn on/off (wire & Vision/changeable)reset_battery_time
: reset battery charges in 2 steps (wire & vision/changeable)reset_battery_time_approved
: Confirm reset battery charges -reset_battery_time
must be set to true (wire & vision/modifiable)reset_blade_time
: reset blade working time in 2 steps (wire & vision/changeable)reset_blade_time_approved
: confirm reset blade working time -reset_battery_time
must be set to true (wire & vision/changeable)
rfidStatus
: Status RF sensor 0=OK/1=Error (vision/read only)sendCommand
: Send cmd command (wire & Vision/changeable)
{
"states": {
"1": "Start", //(wire & Vision & RTK)
"2": "Stop", //(wire & Vision & RTK)
"3": "Home", //(wire & Vision & RTK)
"4": "Follow border", //(wire & Vision & RTK)
"5": "Wi-Fi Lock", //(wire & Vision unknown)
"6": "Wi-Fi Unlock", //(wire & Vision)
"7": "Reset Log", //(wire & Vision & RTK)
"8": "Pause over border", //(wire & Vision)
"9": "Safe go home", //(wire & Vision unknown)
"10": "Start once", //(Vision)
"100": "Pairing command", //(Vision)
"101": "Border Cut", //(Vision & RTK)
"102": "Resume cutting", //(RTK)
"103": "Start driving", //(Draht & Vision & RTK)
"104": "Stop driving" //(Draht & Vision & RTK)
}
}
state
: True for start mower and False for stop mower (wire & Vision/changeable)status
: Status mower (wire & Vision/readonly)
{
"states": {
"0": "IDLE", //(wire & Vision & RTK-Body)
"1": "Home", //(wire & Vision & RTK-Body)
"2": "Start sequence", //(wire)
"3": "Leaving home", //(wire & Vision & RTK-Body)
"4": "Following border", //(wire)
"5": "Searching home", //(wire & Vision & RTK-Body)
"6": "Searching border", //(wire & Vision)
"7": "Mowing", //(wire & Vision & RTK-Body)
"8": "Lifted", //(wire & Vision & RTK-Body)
"9": "Trapped", //(wire & Vision & RTK-Body)
"10": "Blade blocked", //(wire & Vision & RTK-Body)
"11": "Debug", //(wire)
"12": "Driving", //(wire & Vision)
"13": "Digital fence escape", //(wire & Vision)
"30": "Going home", //(wire & Vision)
"31": "Zone training", //(wire & Vision)
"32": "Border Cut", //(wire & Vision)
"33": "Searching zone", //(wire & Vision)
"34": "Pause", //(wire & Vision)
"100": "Map training (completable)", //(RTK-Head)
"101": "Map processing", //(RTK)
"102": "Upgrading firmware", //(RTK)
"103": "Moving to zone", //(RTK-Body)
"104": "Going home", //(RTK-Body)
"105": "Ready for training", //(RTK-Head)
"106": "Map download in progress", //(RTK)
"107": "Map upload in progress", //(RTK-Head)
"108": "Map training paused", //(RTK-Head)
"109": "Map training (not completable)", //(RTK-Head)
"110": "Border crossing", //(Vision)
"111": "Exploring lawn", //(Vision)
"112": "Moving to recovery point", //(RTK-Body)
"113": "Waiting for position", //(RTK-Body)
"114": "Map training (driving)", //(Vision & RTK-Body)
"115": "Map training (rolling back)" //(Vision)
}
}
torque
: Wheel torque Range -50->50 (wire & Vision/changeable)totalBladeTime
: Total blade time (wire & Vision/readonly)totalDistance
: Total distance (wire & Vision/readonly)totalTime
: Total working time (wire & Vision/readonly)waitRain
: Rain delay max. 12h in 30 minute steps and 0 for off (wire & Vision/changeable)waitRainCountdown
Start countdown when the sensor changes from wet to dry (wire & Vision/readonly) (currently disabled)waitRainSensor
Status 0 for dry and 1 for wet (wire & Vision/readonly)wifiQuality
: Wifi quality (wire & Vision/readonly)
{
"rain": {
"s": 0, // 0 for dry and 1 for wet (Wire & Vision)
"cnt": 59 // Start countdown when changing from s=1 wet to s=0 dry - rain was detected (Wire & Vision)
}
}
- MultiZones
multiZones.zones.zone_1.borderDistance
: When boarder cutting, the distance to the edge in mm - allowed 50mm, 100mm, 150mm and 200mm - Set with Blockly without delay - Change is written inmultiZones.multiZones
(vision/changeable)multiZones.zones.zone_1.chargingStation
: 1 If the charging station is found in this zone. 0 for no charging station - Set with Blockly without delay - Change is written tomultiZones.multiZones
(vision/changeable)multiZones.zones.zone_1.cutOverBorder
: 1 to drive over slabs if they are detected, otherwise 0. Set with Blockly without delay - Change is written tomultiZones.multiZones
(Vision /changeable)multiZones.zones.zone_1.zone_id
: Numbering - Start with 1 - (vision/readonly)multiZones.passages.passage_01.tagIdFrom
: RFID id of zoneIdFrom - Set with Blockly without delay - Change is written tomultiZones.multiZones
(vision/changeable)multiZones.passages.passage_01.tagIdTo
: RFID id of zoneIdTo - Set with Blockly without delay - Change is written tomultiZones.multiZones
(vision/changeable)multiZones.passages.passage_01.zoneIdFrom
: Zone from (must zoneIdFrom < zoneIdTo) - Set with Blockly without delay - Change is written tomultiZones.multiZones
(vision/changeable)multiZones.passages.passage_01.zoneIdTo
: Zone closed (must zoneIdTo > zoneIdFrom) - Set with Blockly without delay - Change is written tomultiZones.multiZones
(vision/changeable)multiZones.multiZones
: Multizones JSON (Vision/changeable) ExamplemultiZones.sendMultiZonesJson
: Send changes to Worx with a delay of 1.1 seconds (vision/changeable)
Example:
{
"mz": {
"p": [
// Passages between zones
{
"z1": 1, // Zone from (must z1 < z2)
"z2": 2, // Zone to (must z2 > z1)
"t1": "E000000000000000", // RFID id from z1
"t2": "E0000000KKKKKKKK" // RFID id from z2
}
],
"s": [
// The zones themselves
{
"id": 1, // Numbering - Start with 1
"c": 1, // 1 if the charging station is in this zone. 0 for no charging station.
"cfg": {
"cut": {
"bd": 100, // Edge cut the distance to the edge in mm - allowed 50mm, 100mm, 150mm and 200mm
"ob": 0 // 1 for driving over slabs if they are detected, otherwise 0. Different per-zone is not allowed
}
}
},
{
"id": 2, // Numbering
"c": 0, // 1 if the charging station is in this zone. 0 for no charging station.
"cfg": {
"cut": {
"bd": 100, // Edge cut the distance to the edge in mm - allowed 50mm, 100mm, 150mm and 200mm
"ob": 0 // 1 for driving over slabs if they are detected, otherwise 0. Different per-zone is not allowed
}
}
}
]
}
}
Default without zone:
{
"mz": {
"p": [],
"s": [
{
"id": 1,
"c": 1,
"cfg": {
"cut": {
"bd": 150,
"ob": 0
}
}
}
]
}
}
- Mower
log_improvement
: Send improvement log to worx disable/enable (changeable)log_troubleshooting
: Send troubleshooting log to worx disable/enable (changeable)
- Mower
paused
: Paused schedule in minutes (changeable)
incompleteOperationCount
: Total number of operations submitted to the connection that have not yet been completed. Unacked operations are a subset of this.incompleteOperationSize
: Total packet size of operations submitted to the connection that have not yet been completed. Unacked operations are a subset of this.unackedOperationCount
: Total number of operations that have been sent to the server and are waiting for a corresponding ACK before they can be completed.unackedOperationSize
: Total packet size of operations that have been sent to the server and are waiting for a corresponding ACK before they can be completed.last_update
: Last update from tokennext_update
: Next update from tokenonline
: Status MQTT Connection (false=offline/true=online)
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="${]4s$w?n24Az}=7iAIY">mz</variable>
<variable id="o.FQ]_Xa!tHn2T7Ak{Pt">value</variable>
<variable id="/@E4iFRMr:x+u?{7yFlB">test</variable>
<variable id="jxTInS{}mk_)WJa[:,fA">i</variable>
</variables>
<block type="procedures_defcustomnoreturn" id="u:w*aBH!92nydG0Mu.1-" x="-87" y="-87">
<mutation statements="false">
<arg name="mz" varid="${]4s$w?n24Az}=7iAIY"></arg>
<arg name="value" varid="o.FQ]_Xa!tHn2T7Ak{Pt"></arg>
</mutation>
<field name="NAME">set_bd</field>
<field name="SCRIPT">bXouY2ZnLmN1dC5iZCA9IDE1MA==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="variables_set" id="jiP0218}2,Y]B]RdKD~`" x="-87" y="-35">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
<value name="VALUE">
<block type="convert_json2object" id=";Ef{FHk_~heeozyHFxci">
<value name="VALUE">
<block type="get_value" id="LMfldD:[D4%}yWE8,N0y">
<field name="ATTR">val</field>
<field name="OID">worx.0.xxxxxxxxxxxxxxxxxxxx.multiZones.sendMultiZonesJson</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id="D{XG==q$flbH?32eX%D(">
<field name="VAR" id="jxTInS{}mk_)WJa[:,fA">i</field>
<value name="LIST">
<block type="get_attr" id="b~2/cb$WhEj*9i6,(ey5">
<value name="PATH">
<shadow type="text" id="+n~;GfHf{,#D!5D}H+m=">
<field name="TEXT">s</field>
</shadow>
</value>
<value name="OBJECT">
<block type="variables_get" id="YloS$N%I=6[yk;loD*1O">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</value>
<statement name="DO">
<block type="procedures_callcustomnoreturn" id="er{Pwq:Y7n_I|CQoup,|">
<mutation name="set_bd">
<arg name="mz"></arg>
<arg name="value"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="(-_i0(y:W}U_x?s(7k%4">
<field name="VAR" id="jxTInS{}mk_)WJa[:,fA">i</field>
</block>
</value>
<value name="ARG1">
<block type="math_number" id="{2u/=v!k|yJsOesq[CU^">
<field name="NUM">150</field>
</block>
</value>
<next>
<block type="debug" id="b1}}DmS-[_W:+Y+$|%)r">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="7wx?ca_U[S~8DA4}*RXx">
<field name="TEXT">test</field>
</shadow>
<block type="variables_get" id="_zz;w64g-!E$zX$]pvyI">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<next>
<block type="debug" id="o[S0+1%{oLU+r:03tz7=">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="7wx?ca_U[S~8DA4}*RXx">
<field name="TEXT">test</field>
</shadow>
<block type="variables_get" id="tjqxQ(MO|CR~/Xq5;Pm[">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
<next>
<block type="control" id="C^lZ^SNIQ#,vh}?hSG_O">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">worx.0.xxxxxxxxxxxxxxxxxxxx.multiZones.sendMultiZonesJson</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="convert_object2json" id="z)EXA+%8lB4K#7!Hp1V%">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="C4np)gS@^Y*?-0I+R6+r">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</xml>
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="${]4s$w?n24Az}=7iAIY">mz</variable>
<variable id="o.FQ]_Xa!tHn2T7Ak{Pt">value</variable>
<variable id="/@E4iFRMr:x+u?{7yFlB">test</variable>
<variable id="jxTInS{}mk_)WJa[:,fA">i</variable>
</variables>
<block type="procedures_defcustomnoreturn" id="u:w*aBH!92nydG0Mu.1-" x="-87" y="-87">
<mutation statements="false">
<arg name="mz" varid="${]4s$w?n24Az}=7iAIY"></arg>
<arg name="value" varid="o.FQ]_Xa!tHn2T7Ak{Pt"></arg>
</mutation>
<field name="NAME">set_bd</field>
<field name="SCRIPT">bXouY2ZnLmN1dC5iZCA9IDE1MA==</field>
<comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
</block>
<block type="variables_set" id="jiP0218}2,Y]B]RdKD~`" x="-87" y="-35">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
<value name="VALUE">
<block type="convert_json2object" id=";Ef{FHk_~heeozyHFxci">
<value name="VALUE">
<block type="get_value" id="LMfldD:[D4%}yWE8,N0y">
<field name="ATTR">val</field>
<field name="OID">worx.0.xxxxxxxxxxxxxxxxxxxx.multiZones.sendMultiZonesJson</field>
</block>
</value>
</block>
</value>
<next>
<block type="controls_forEach" id="D{XG==q$flbH?32eX%D(">
<field name="VAR" id="jxTInS{}mk_)WJa[:,fA">i</field>
<value name="LIST">
<block type="get_attr" id="b~2/cb$WhEj*9i6,(ey5">
<value name="PATH">
<shadow type="text" id="+n~;GfHf{,#D!5D}H+m=">
<field name="TEXT">s</field>
</shadow>
</value>
<value name="OBJECT">
<block type="variables_get" id="YloS$N%I=6[yk;loD*1O">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</value>
<statement name="DO">
<block type="procedures_callcustomnoreturn" id="er{Pwq:Y7n_I|CQoup,|">
<mutation name="set_bd">
<arg name="mz"></arg>
<arg name="value"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="(-_i0(y:W}U_x?s(7k%4">
<field name="VAR" id="jxTInS{}mk_)WJa[:,fA">i</field>
</block>
</value>
<value name="ARG1">
<block type="math_number" id="{2u/=v!k|yJsOesq[CU^">
<field name="NUM">150</field>
</block>
</value>
<next>
<block type="debug" id="b1}}DmS-[_W:+Y+$|%)r">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="7wx?ca_U[S~8DA4}*RXx">
<field name="TEXT">test</field>
</shadow>
<block type="variables_get" id="_zz;w64g-!E$zX$]pvyI">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</next>
</block>
</statement>
<next>
<block type="debug" id="o[S0+1%{oLU+r:03tz7=">
<field name="Severity">log</field>
<value name="TEXT">
<shadow type="text" id="7wx?ca_U[S~8DA4}*RXx">
<field name="TEXT">test</field>
</shadow>
<block type="variables_get" id="tjqxQ(MO|CR~/Xq5;Pm[">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
<next>
<block type="control" id="C^lZ^SNIQ#,vh}?hSG_O">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">worx.0.xxxxxxxxxxxxxxxxxxxx.multiZones.sendMultiZonesJson</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="convert_object2json" id="z)EXA+%8lB4K#7!Hp1V%">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="C4np)gS@^Y*?-0I+R6+r">
<field name="VAR" id="/@E4iFRMr:x+u?{7yFlB">test</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</next>
</block>
</xml>
<xml xmlns="https://developers.google.com/blockly/xml">
<variables>
<variable id="2#Mf$#JFCN9Nw2F2L[?=">x</variable>
<variable id="fNt-C|86(glunJ:-t=dK">p</variable>
<variable id="Rci4:iMYXzjoI2k]P^X)">s</variable>
<variable id="[t-srB,I/UkXaWBk4*A*">list</variable>
<variable id="]WA|%5f=H9^9uiLc;KS[">new_json</variable>
</variables>
<block type="procedures_defcustomreturn" id="@Y/LobsPw4k!jQb)fI!." x="88" y="13">
<mutation statements="false">
<arg name="x" varid="2#Mf$#JFCN9Nw2F2L[?="></arg>
<arg name="p" varid="fNt-C|86(glunJ:-t=dK"></arg>
<arg name="s" varid="Rci4:iMYXzjoI2k]P^X)"></arg>
</mutation>
<field name="NAME">json</field>
<field name="SCRIPT">eFsicCJdID0gcDsNCnhbInMiXSA9IHM7DQpyZXR1cm4geA==</field>
<comment pinned="false" h="80" w="160">Describe this function...</comment>
</block>
<block type="variables_set" id="WAsPqIMv;bh95{7~Y!D!" x="88" y="63">
<field name="VAR" id="[t-srB,I/UkXaWBk4*A*">list</field>
<value name="VALUE">
<block type="convert_json2object" id="S5uRAnpcGp/7*1b,aum~">
<value name="VALUE">
<block type="text" id="}n3]_HIP*7y5GMEo-!c3">
<field name="TEXT">{p:[],s:[]}</field>
</block>
</value>
</block>
</value>
<next>
<block type="variables_set" id="Kf#KkskB7l|uDiI!(fjq">
<field name="VAR" id="]WA|%5f=H9^9uiLc;KS[">new_json</field>
<value name="VALUE">
<block type="procedures_callcustomreturn" id="K;OJHrji~09PeJ33q.gl">
<mutation name="json">
<arg name="x"></arg>
<arg name="p"></arg>
<arg name="s"></arg>
</mutation>
<value name="ARG0">
<block type="variables_get" id="ipM^e+~#-hoo0(047Ybo">
<field name="VAR" id="[t-srB,I/UkXaWBk4*A*">list</field>
</block>
</value>
<value name="ARG1">
<block type="lists_create_with" id="HJIZHLc]lL0Tgqe$E~Ul">
<mutation items="0"></mutation>
</block>
</value>
<value name="ARG2">
<block type="lists_create_with" id="JH=jADj%lYJ(:7%v[o+3">
<mutation items="1"></mutation>
<value name="ADD0">
<block type="convert_json2object" id="@5BT0}WJ`srV89LD5h?D">
<value name="VALUE">
<block type="text" id="=.e.D[I2IQ{u!4;(-D-,">
<field name="TEXT">{"id":1,"c":1,"cfg":{"cut":{"bd":150,"ob":1}}}</field>
</block>
</value>
</block>
</value>
</block>
</value>
</block>
</value>
<next>
<block type="control" id="k$;?LM/[x-TbZ^m=F4}i">
<mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation>
<field name="OID">worx.0.xxxxxxxxxx.multiZones.sendMultiZonesJson</field>
<field name="WITH_DELAY">FALSE</field>
<value name="VALUE">
<block type="convert_object2json" id="b~2Bz}OiNg{V]!QgN^J7">
<field name="PRETTIFY">FALSE</field>
<value name="VALUE">
<block type="variables_get" id="b|+SOSd+ZD@*XHPGu*I(">
<field name="VAR" id="]WA|%5f=H9^9uiLc;KS[">new_json</field>
</block>
</value>
</block>
</value>
</block>
</next>
</block>
</next>
</block>
</xml>
{"p": [],"s": [{"id": 1, "c": 1, "cfg": {"cut": {"bd": 100, "ob": 1}}}]}