mirror of
https://github.com/letscontrolit/ESPEasy.git
synced 2026-09-12 01:24:04 +00:00
The Get/Set config plugin functions were hardly used in ESPEasy. Currently the `config` command is only implemented for the "Level" plugin, but hardly documented. Its counterpart, to Get config, is also hardly used, but can be very useful to access values (either settings or unused values) via `[taskname#valuename]` notation. This is now also added for the many GPS values, as one can only set 4 units of measure as task values.
667 lines
17 KiB
Plaintext
667 lines
17 KiB
Plaintext
|
|
**TODO** : Check commands M..Z and check for all commands whether the "class" is still valid.
|
|
|
|
|
|
.. csv-table::
|
|
:header: "Command", "Class", "Purpose / Syntax"
|
|
:widths: 8, 5, 30
|
|
|
|
"
|
|
AsyncEvent","
|
|
:blue:`Special`","
|
|
Schedule an event, it's possible to send a float value along as well.
|
|
|
|
This is the same as a regular event, but it will not be executed immediately.
|
|
Instead it will be added to an event queue.
|
|
|
|
Use this to keep rules execution times as short as possible.
|
|
|
|
N.B. New values sent by a task will also be of this type.
|
|
|
|
See event syntax below..."
|
|
"
|
|
AccessInfo","
|
|
:red:`Internal`","
|
|
Show allowed IP range for the web interface.
|
|
|
|
``AccessInfo``
|
|
|
|
Example output: ``Allowed IP range : 192.168.10.0 - 192.168.10.255``"
|
|
"
|
|
Background","
|
|
:red:`Internal`","
|
|
Process background tasks.
|
|
|
|
``Background``"
|
|
"
|
|
Build","
|
|
:red:`Internal`","
|
|
Get or set build information. This will not be stored, so only valid until reboot.
|
|
|
|
``Build``
|
|
|
|
``Build,12345``
|
|
|
|
Example output: ``Build:20104``"
|
|
"
|
|
ClearAccessBlock","
|
|
:red:`Internal`","
|
|
Clear allowed IP range for the web interface for the current session.
|
|
See also ``AccessInfo``.
|
|
|
|
``ClearAccessBlock``"
|
|
"
|
|
ClearPassword","
|
|
:red:`Internal`","
|
|
Clear the password of the unit.
|
|
See also ``Password``.
|
|
|
|
``ClearPassword,<current password>``"
|
|
"
|
|
ClearRTCram","
|
|
:red:`Internal`","
|
|
Clear all (cached) data from the RTC memory.
|
|
This data is persistent as long as the node is powered and thus survives a reboot or crash.
|
|
|
|
``ClearRTCram``"
|
|
"
|
|
Config","
|
|
:red:`Internal`","
|
|
Remote config of a task.
|
|
This allows for actually change the config as stored in the settings for a task.
|
|
|
|
The syntax is like ``config,task,<taskname>,<actual config command>``
|
|
|
|
Right now only the ``Regulator - Level Control`` plugin (P021) supports this via its ``SetLevel`` command.
|
|
|
|
Later other config options might be added, like ``SetInterval`` or other generic options.
|
|
|
|
Example for the task named 'VoltageLevel': ``config,task,VoltageLevel,SetLevel,22``"
|
|
"
|
|
ControllerDisable","
|
|
:red:`Internal`","
|
|
Disable a controller.
|
|
This will not save the settings, but if the settings get saved anyway the controller will remain disabled at reboot.
|
|
|
|
``ControllerDisable,<controller nr>``"
|
|
"
|
|
ControllerEnable","
|
|
:red:`Internal`","
|
|
Enable a controller. (Only possible when a protocol is assigned to the controller index)
|
|
This will not save the settings, but if the settings get saved anyway the controller will remain enabled at reboot.
|
|
|
|
``ControllerEnable,<controller nr>``"
|
|
"
|
|
DateTime","
|
|
:red:`Internal`","
|
|
Get or set the date and time (optional).
|
|
|
|
Usage: ``Datetime[,YYYY-MM-DD[,hh:mm:ss]]``
|
|
|
|
Examples:
|
|
|
|
* ``Datetime,2020-02-29,00:23:00``
|
|
* ``Datetime,2020-02-29`` - set node time '2020-02-29 00:00:00'
|
|
* ``Datetime`` - get current node time
|
|
|
|
Time source will be set to ``Manual_set`` until the time will be updated via another source. (e.g. GPS or NTP)"
|
|
"
|
|
Debug","
|
|
:red:`Internal`","
|
|
Change Serial port debug level
|
|
|
|
``Debug,<1-4>``"
|
|
"
|
|
DeepSleep","
|
|
:red:`Internal`","
|
|
Switch the node to deep sleep.
|
|
Max sleep time depends on library version and differs from roughly 71 minutes (4294 sec.) to 3h46 for ESP8266, and up to 8 years (281474976 sec.) on ESP32 (theoretically).
|
|
If you specify a Min sleep time of 0, you'll have to wake the device yourself by pulling RST to GND. If you specify a negative sleep time value, the maximum will be applied.
|
|
|
|
``DeepSleep,<sleep time in seconds>``"
|
|
"
|
|
Delay","
|
|
:green:`Rules`","
|
|
Delay rule processing. Warning: Do not use this as it may cause all kinds of issues.
|
|
|
|
``Delay,<delay in milliSeconds>``"
|
|
"
|
|
DNS","
|
|
:red:`Internal`","
|
|
Get or set DNS configuration.
|
|
|
|
``DNS``
|
|
|
|
``DNS,8.8.8.8``
|
|
|
|
Example output: ``DNS:192.168.88.1(DHCP)``"
|
|
"
|
|
DST","
|
|
:red:`Internal`","
|
|
Get or set Daylight Saving Time.
|
|
|
|
``DST``
|
|
|
|
``DST,0`` to disable, ``DST,1`` to enable
|
|
|
|
Example output: ``DST:true``"
|
|
"
|
|
EraseSDKwifi","
|
|
:red:`Internal`","
|
|
Erase WiFi settings that may have been stored in the SDK wifi settings area.
|
|
|
|
``EraseSDKwifi``"
|
|
"
|
|
Event","
|
|
:blue:`Special`","
|
|
Create an event, it's possible to send a float value along as well.
|
|
|
|
See event syntax below..."
|
|
"
|
|
ExecuteRules","
|
|
:red:`Internal`","
|
|
Execute the rules in a specific file on the file system.
|
|
|
|
``ExecuteRules,<filename>``"
|
|
"
|
|
Gateway","
|
|
:red:`Internal`","
|
|
Get or set the gateway configuration
|
|
|
|
``Gateway``
|
|
|
|
``Gateway,192.168.1.1``
|
|
|
|
Example output: ``Gateway:192.168.10.254(DHCP)``"
|
|
"
|
|
I2Cscanner","
|
|
:red:`Internal`","
|
|
Run I2C scanner to find connected I2C chips. Output will be sent to the serial port.
|
|
|
|
``I2Cscanner``
|
|
|
|
Example output:
|
|
|
|
.. code-block:: none
|
|
|
|
4500043 : Info : Command: i2cscanner
|
|
I2C : Found 0x3c
|
|
I2C : Found 0x40
|
|
I2C : Found 0x5a
|
|
|
|
"
|
|
"
|
|
IP","
|
|
:red:`Internal`","
|
|
Get or set IP address
|
|
|
|
``IP``
|
|
|
|
``IP,<IP address>``
|
|
|
|
Example output: ``IP:192.168.10.86(DHCP)``"
|
|
"
|
|
Let","
|
|
:red:`Internal`","
|
|
Set the value of n (1..16).
|
|
|
|
``Let,<n>,<value>``"
|
|
"
|
|
Load","
|
|
:red:`Internal`","
|
|
Load (reload) the stored settings.
|
|
|
|
``Load``"
|
|
"
|
|
LogEntry","
|
|
:red:`Internal`","
|
|
Add string to log
|
|
|
|
``LogEntry,<string>[,<level>]``
|
|
|
|
``<level>`` is optional and can be any of these (numeric) values:
|
|
|
|
- 1 = ERROR
|
|
- 2 = INFO (default)
|
|
- 3 = DEBUG
|
|
- 4 = DEBUG_DEV
|
|
|
|
When a ``<level>`` is provided, it will be present in the log output if the 'Tolerant last parameter' Advanced setting is enabled."
|
|
"
|
|
LogPortStatus","
|
|
:red:`Internal`","
|
|
Display status information about all ports
|
|
|
|
``LogPortStatus``"
|
|
"
|
|
LoopTimerSet
|
|
|
|
LoopTimerSet_ms","
|
|
:green:`Rules`","
|
|
Start a sequence of timed events
|
|
|
|
* ``LoopTimerSet,<timernr>,<timeInSeconds>``
|
|
* ``LoopTimerSet_ms,<timernr>,<time in msec>``
|
|
* ``LoopTimerSet,<timernr>,<timeInSeconds>,<nr of loops>``
|
|
* ``LoopTimerSet_ms,<timernr>,<time in msec>,<nr of loops>``
|
|
* ``LoopTimerSet,<timernr>,0`` (disables the timer)
|
|
|
|
The 3rd value is optional and can be used to set a fixed number of loops.
|
|
|
|
When possible, try using the ``LoopTimerSet`` funxtion (or its msec equivalent) to get a consistent schedule interval.
|
|
A loop timer is basing its next scheduled time on the previous scheduled time and not the moment when it is actually executed.
|
|
|
|
On a typical setup, calling ``TimerSet`` from the rules every time a timer has expired, may cause a delay of at least 20 msec.
|
|
The actual jitter introduced here depends on the load of the node and the length of the rules.
|
|
|
|
Please note, the execution time in the rules may differ, but as long as a loop timer is used, the scheduled time to run is always a fixed interval from when it was set. (even when a timer interval was missed)
|
|
|
|
The ``Rules#Timer`` event generated by a timer has 2 event values. (since build 2020/08/12):
|
|
|
|
* ``%eventvalue1%`` has the timer number (1 ... max timer ID)
|
|
* ``%eventvalue2%`` has the loop count for loop timers (since build 2020/08/12)
|
|
|
|
See also ``TimerSet``.
|
|
|
|
N.B. the timernr is shared between ``TimerSet`` and ``LoopTimerSet``"
|
|
"
|
|
meminfo","
|
|
:red:`Internal`","
|
|
Will send summary of struct sizes to the serial port.
|
|
|
|
``meminfo``
|
|
|
|
Example output:
|
|
|
|
.. code-block:: none
|
|
|
|
4306250 : Info : Command: meminfo
|
|
SecurityStruct | 593
|
|
SettingsStruct | 1228
|
|
ExtraTaskSettingsStruct| 472
|
|
DeviceStruct | 12
|
|
|
|
"
|
|
"
|
|
meminfoDetail","
|
|
:red:`Internal`","
|
|
Will enable extra detailed information on the internal structure of the settings file.
|
|
This is displayed graphically in the system info page.
|
|
This state is not stored, so only active until reboot.
|
|
|
|
A detailed summary is also sent to the serial port.
|
|
|
|
``meminfoDetail``"
|
|
"
|
|
Name","
|
|
:red:`Internal`","
|
|
Set the name of the unit
|
|
|
|
``Name,<new name>``"
|
|
"
|
|
Password","
|
|
:red:`Internal`","
|
|
Set the password of the unit.
|
|
See also ``ClearPassword``.
|
|
|
|
``Password,<new password>``"
|
|
"
|
|
ProvisionConfig","
|
|
:red:`Internal`","
|
|
Fetch ``config.dat`` as configured in the Provisioning configuration (see Settings Archive)
|
|
|
|
``ProvisionConfig``"
|
|
"
|
|
ProvisionSecurity","
|
|
:red:`Internal`","
|
|
Fetch ``security.dat`` as configured in the Provisioning configuration (see Settings Archive)
|
|
|
|
``ProvisionSecurity``"
|
|
"
|
|
ProvisionNotification","
|
|
:red:`Internal`","
|
|
Fetch ``notification.dat`` as configured in the Provisioning configuration (see Settings Archive)
|
|
|
|
``ProvisionNotification``"
|
|
"
|
|
ProvisionProvision","
|
|
:red:`Internal`","
|
|
Fetch ``provisioning.dat`` as configured in the Provisioning configuration (see Settings Archive)
|
|
|
|
``ProvisionProvision``"
|
|
"
|
|
ProvisionRules","
|
|
:red:`Internal`","
|
|
Fetch ``rulesN.txt`` as configured in the Provisioning configuration (see Settings Archive)
|
|
|
|
``ProvisionRules,1`` to fetch ``rules1.txt`` "
|
|
"
|
|
Publish","
|
|
:green:`Rules`","
|
|
Send command using MQTT broker service
|
|
|
|
``Publish,<topic>,<value>``"
|
|
"
|
|
Reboot","
|
|
:red:`Internal`","
|
|
Reboot the ESP
|
|
|
|
``Reboot``"
|
|
"
|
|
Reset","
|
|
:red:`Internal`","
|
|
Reset config to factory default. Caution, all settings will be lost!
|
|
|
|
``Reset``"
|
|
"
|
|
Reset Flash Write Counter","
|
|
:red:`Internal`","
|
|
Reset flash write to zero.
|
|
|
|
``ResetFlashWriteCounter``"
|
|
"
|
|
Rules","
|
|
:red:`Internal`","
|
|
Rules enabled (1) or rules disabled (0)
|
|
|
|
``Rules,<1/0>``"
|
|
"
|
|
Save","
|
|
:red:`Internal`","
|
|
Save config to persistent flash memory
|
|
|
|
``Save``"
|
|
"
|
|
SendTo","
|
|
:green:`Rules`","
|
|
Send command to other ESP (using UDP)
|
|
|
|
``SendTo,<unit nr>,<command>``"
|
|
"
|
|
SendToHTTP","
|
|
:green:`Rules`","
|
|
Send command to other network device using HTTP
|
|
|
|
``SendToHTTP,<IP address>,<Portnumber>,<command>``
|
|
|
|
``SendToHTTP,<domain>,<Portnumber>,</url>``"
|
|
"
|
|
SendToUDP","
|
|
:green:`Rules`","
|
|
Send command to other network device using UDP (non-ESP Easy units)
|
|
|
|
``SendToUDP,<IP address>,<Portnumber>,<command>``"
|
|
"
|
|
Settings","
|
|
:red:`Internal`","
|
|
Show settings on serial terminal
|
|
|
|
``Settings``"
|
|
"
|
|
Subnet","
|
|
:red:`Internal`","
|
|
Get or set the network subnet setting
|
|
|
|
``Subnet``
|
|
|
|
Example output: ``Subnet:255.255.255.0(DHCP)``
|
|
|
|
``Subnet,255.255.255.0``"
|
|
"
|
|
Subscribe","
|
|
:green:`Rules`","
|
|
Subscribes to a specific topic using MQTT broker service
|
|
|
|
``Subscribe,<topic>``"
|
|
"
|
|
TaskClear","
|
|
:red:`Internal`","
|
|
Delete the given task/device
|
|
|
|
``TaskClear,<task nr/task name>``"
|
|
"
|
|
TaskClearAll","
|
|
:red:`Internal`","
|
|
Delete ALL task/device
|
|
|
|
``TaskClearAll``"
|
|
"
|
|
TaskDisable","
|
|
:red:`Internal`","
|
|
Disable a task.
|
|
This will not save the settings, but if the settings get saved anyway the task will remain disabled at reboot.
|
|
|
|
``TaskDisable,<task nr/task name>``"
|
|
"
|
|
TaskEnable","
|
|
:red:`Internal`","
|
|
Enable a task. (only possible when a plugin is assigned to the task)
|
|
This will not save the settings, but if the settings get saved anyway the task will remain enabled at reboot.
|
|
|
|
``TaskEnable,<task nr/task name>``"
|
|
"
|
|
TaskRun","
|
|
:red:`Internal`","
|
|
Run/excecute the given task/device, use to manually force an update/read of the task.
|
|
|
|
``TaskRun,<task nr/task name>``"
|
|
"
|
|
TaskValueSet","
|
|
:green:`Rules`","
|
|
Set values on a **Dummy Task** (device).
|
|
|
|
``TaskValueSet,<task nr/task name>,<value nr/value name>,<value/formula>``"
|
|
"
|
|
TaskValueSetAndRun","
|
|
:green:`Rules`","
|
|
Set values on a **Dummy Task** (device) and run/execute the task/device, to manually force an update/read of the task.
|
|
|
|
``TaskValueSetAndRun,<task nr/task name>,<value nr/value name>,<value/formula>``"
|
|
"
|
|
TimerPause","
|
|
:green:`Rules`","
|
|
Pause a timer
|
|
|
|
``TimerPause,<timer number>``"
|
|
"
|
|
TimerResume","
|
|
:green:`Rules`","
|
|
Resume a paused timer
|
|
|
|
``TimerResume,<timer number>``"
|
|
"
|
|
TimerSet
|
|
|
|
TimerSet_ms","
|
|
:green:`Rules`","
|
|
Start a timed event
|
|
|
|
* ``TimerSet,<timernr>,<timeInSeconds>``
|
|
* ``TimerSet_ms,<timernr>,<time in msec>``
|
|
* ``TimerSet,<timernr>,0`` (disables the timer)
|
|
|
|
See also ``LoopTimerSet``
|
|
|
|
N.B. the timernr is shared between ``TimerSet`` and ``LoopTimerSet``"
|
|
"
|
|
TimeZone","
|
|
:red:`Internal`","
|
|
Get or set the TimeZone
|
|
|
|
``TimeZone``
|
|
|
|
Example output: ``TimeZone:60``
|
|
|
|
``TimeZone,<minutes from UTC>``"
|
|
"
|
|
UdpPort","
|
|
:red:`Internal`","
|
|
Set the udp port
|
|
|
|
``UdpPort,<port>``"
|
|
"
|
|
UdpTest","
|
|
:red:`Internal`","
|
|
Send a test message to an udp port, for <count> number of times
|
|
|
|
``UdpTest,<port>,<count>``"
|
|
"
|
|
Unit","
|
|
:red:`Internal`","
|
|
Set the unit number
|
|
|
|
``Unit,<unit number>``"
|
|
"
|
|
UseNTP","
|
|
:red:`Internal`","
|
|
Get or set the status of NTP (Network Time Protocol)
|
|
|
|
``UseNTP``
|
|
|
|
Example output: ``UseNTP:true``
|
|
|
|
``UseNTP,<0/1>``"
|
|
"
|
|
WdConfig","
|
|
:red:`Internal`","
|
|
Configure external Watchdog device
|
|
|
|
``WdConfig,<address>,<command>,<data>``"
|
|
"
|
|
WdRead","
|
|
:red:`Internal`","
|
|
Read from external Watchdog device
|
|
|
|
``WdRead,<address>,<pointer/register>``"
|
|
"
|
|
WifiAPKey","
|
|
:red:`Internal`","
|
|
Change AP WPA key
|
|
|
|
``WifiAPKey,<WPA key>``"
|
|
"
|
|
WifiAllowAP","
|
|
:red:`Internal`","
|
|
Uncheck the setting to prevent starting AP when unable to connect to a network.
|
|
|
|
``WifiAllowAP``"
|
|
"
|
|
WifiAPMode","
|
|
:red:`Internal`","
|
|
Force the unit into AP mode.
|
|
|
|
``WifiAPMode``"
|
|
"
|
|
WifiConnect","
|
|
:red:`Internal`","
|
|
Connect to configured wireless network
|
|
|
|
``WifiConnect``"
|
|
"
|
|
WifiDisconnect","
|
|
:red:`Internal`","
|
|
Disconnect from wireless network
|
|
|
|
``WifiDisconnect``"
|
|
"
|
|
WifiKey","
|
|
:red:`Internal`","
|
|
Change WPA key for primary WiFi
|
|
|
|
``WifiKey,<Wifi WPA key>``"
|
|
"
|
|
WifiKey2","
|
|
:red:`Internal`","
|
|
Change WPA key for secondary WiFi
|
|
|
|
``WifiKey2,<Wifi WPA key>``"
|
|
"
|
|
WifiScan","
|
|
:red:`Internal`","
|
|
Scan Wireless networks
|
|
|
|
``WifiScan``"
|
|
"
|
|
WifiSSID","
|
|
:red:`Internal`","
|
|
Change SSID to connect as primary WiFi
|
|
|
|
``WifiSSID,<SSID>``"
|
|
"
|
|
WifiSSID2","
|
|
:red:`Internal`","
|
|
Change SSID to connect as secondry WiFi
|
|
|
|
``WifiSSID2,<SSID>``"
|
|
"
|
|
WifiSTAMode","
|
|
:red:`Internal`","
|
|
Force the unit into STA mode.
|
|
|
|
``WifiSTAMode``"
|
|
|
|
|
|
|
|
Event command
|
|
~~~~~~~~~~~~~
|
|
|
|
The event command is a special command used to trigger an event. This event can then be acted upon from the rules.
|
|
You can send 0..4 event values along with the event.
|
|
|
|
An event will be executed immediately if its origin demands a state update.
|
|
For events which do not need to be executed immediately, we have the AsyncEvent, which is added to an event queue.
|
|
This queue is processed 10 times per second, one event at a time.
|
|
|
|
Try to use AsyncEvents where possible, to keep rules processing times low.
|
|
|
|
|
|
.. csv-table::
|
|
:header: "Event / Info"
|
|
:widths: 1
|
|
|
|
"
|
|
``Event,SingleEvent``
|
|
|
|
The event (triggered by any of the launch ways) will make the unit publish a message.
|
|
|
|
**Rules example**
|
|
|
|
.. code-block:: none
|
|
|
|
on SingleEvent do
|
|
Publish,%sysname%/Info,A single event has been triggered!
|
|
endon
|
|
"
|
|
"
|
|
``Event,SingleValue=123``
|
|
|
|
The event value ``123`` is intercepted and published.
|
|
|
|
**Rules example**
|
|
|
|
.. code-block:: none
|
|
|
|
on SingleValue do
|
|
Publish,%sysname%/Info,An event has been sent (%eventvalue%)!
|
|
endon
|
|
"
|
|
"
|
|
``Event,Multi=1,2,3,99``
|
|
|
|
The event value ``99`` (4) is intercepted and the rule ``TaskValueSet...`` is
|
|
triggered, value of task 12 value 1 is then ``1 + 2`` = ``3`` or ``1 - 2`` = ``-1``.
|
|
|
|
**Rules example**
|
|
|
|
.. code-block:: none
|
|
|
|
on Multi do
|
|
if %eventvalue4%=99
|
|
TaskValueSet,12,1,[%eventvalue1%+%eventvalue2%]
|
|
else
|
|
TaskValueSet,12,1,[%eventvalue3%-%eventvalue2%]
|
|
endif
|
|
endon
|
|
"
|
|
|