Extra IO - ProMini Extender

.

Plugin details

Type: Extra IO

Name: ProMini Extender

Status ESP32: NORMAL

Status ESP8266: NORMAL

GitHub: P011_PME.ino

Maintainer: .

Used libraries: .

Supported hardware

.

This plugin supports the Pro Mini Extender, that’s a software solution installed on an Arduino Nano, providing 5 available analog input/output pins and 14 digital input/output pins.

The Pro Mini Extender software has to be manually installed on the Arduino Nano (or a Chinese clone), using the MiniProExtender software project from this ESPEasySlaves repository via the Arduino IDE.

After installing the software on the Arduino Nano, the simplest solution is to power the PME with 3.3V, even if it’s specified for 5V, so no level converter is needed for the I2C connection with the ESP, that only allows for 3.3V signal levels. The 3.3V power has to be connected to the 5V pin on the Arduino Nano, not on the 3.3V pin, as that’s a low-power output-only pin!

NB: This software can also be installed on other Arduino models, that support I2C, Analog and Digital pins, but this hasn’t been actively tested. Depending on the available IO pins, some of the features may not match with the Arduino Nano.

2024-08-13: This plugin is excluded from ESP8266 1M builds for size reasons. It can still be used for Custom builds and is normally available in other builds.

Device Configuration

../_images/P011_DeviceConfiguration.png
  • Name A unique name should be entered here.

  • Enabled The device can be disabled or enabled. When not enabled the device should not use any resources.

Sensor

  • Port Select the port (pin) of the Pro Mini Extender that is addressed by this task. For a Digital or Input (Switch) the range is 0..13, for an Analog input, the available pins are 0..3 and 6..7, as A4 and A5 are the (fixed) I2C pins of the Arduino Nano.

I2C Options

The available settings here depend on the build used. At least the Force Slow I2C speed option is available, but selections for the I2C Multiplexer can also be shown. For details see the I2C Bus page

Device Settings

  • Port Type:

../_images/P011_PortTypeOptions.png
  • Digital: An On/Off Input/Output type of port, every Interval the pin is read and the state is made available in the Value field.

  • Analog: Read the current analog value of the port.

  • Input (switch): Act like an input switch, the pin is read every 20 msec, and if the state changes, the new state is reported as an event, with the new value. The Interval is ignored when this Port Type is selected.

Data Acquisition

This group of settings are standard available configuration items.

  • Single event with all values: When this setting is enabled, all available values will be sent in a single event <TaskName>#All, with all values in order as arguments to the event.

  • Show derived values: When checked, the Devices overview page, and the /json endpoint (used for updating the Devices overview page) will include any Derived values as defined. See the TaskValueSetDerived and TaskValueSetPresentation commands.

  • Event & Log derived values: When checked, the Derived values will be generated as Events, to be handled in Rules, and sent to logging devices like the Syslog server and/or SD-card logging.

(The derived values options are only available if String variables feature is included in the build.)


  • Send to Controller: Select the Controller(s) to send the Values to, either on a TaskRun command applied to the task, or on an Interval time action.

Send to Controller is only visible when one or more Controllers are configured.

Depending on the controller capabilities, some configuration settings may be shown:

../_images/Task_config_page_Controllers_section.png

All configured Controllers are shown here, including the enabled or disabled state (multiple Controllers can be enabled, only a single MQTT Controller can be enabled at one time!).

For each controller the user can select wether the data should be sent on each Interval (or explicit TaskRun).

For the Domoticz controllers the value index (IDX) has to be configured.

For some controllers, like Home Assistant/openHAB, there are extra options available.

  • Group: This represents the group id to combine all values from multiple tasks into a single grouped-device during MQTT AutoDiscovery. Groups, by design, can span multiple ESPEasy devices, if desired, as long as the Task/Valuename combinations are unique. If a group should only combine Tasks from a single ESPEasy unit, the group id should be unique across multiple ESPEasy units. The group description, default Group <n>, can be adjusted in Home Assistant. If the Group value matches the current Unit nr, the Unit name, %sysname%, is used instead of Group <nr>.

  • Retained: For MQTT Controllers, this setting can be enabled to send the values for the current task with the Retain flag set. The Publish Retain flag in the Controller settings will override this by sending all task values with Retain flag enabled.

  • Send derived: This checkbox determines if any configured Derived values should also be sent to the controller (and included in the AutoDiscovery if that’s available and enabled).

  • Resend MQTT Discovery: When checked, will start a resend of the MQTT Discovery process for this task after a random delay, when Submit is clicked, so any changed settings will be updated in the MQTT broker. This setting is only available if the controller is enabled, the Auto Discovery feature is available and enabled for the controller. This setting is not stored.

Other controllers, like f.e. FHEM HTTP, do not support additional settings besides the checkbox to enable sending the data.


Interval By default, Interval will be set to 60 sec. It is the frequency used to read sensor values and send these to any Controllers configured for this device.

Values

The single Value available holds the last digital, analog or input (switch) state value.

Commands available

Command

Extra information

extgpio,<pin>,<0|1>

<pin> : The IO pin on the PME board, range 0..13 for Digital output.

<0|1> : Select 0 for Off (low), and 1 for On (high) level output

Switch the pin to either low or high level output.

extpwm,<pin>,<level>

<pin> : The IO pin on the PME board, range 0..7 for Analog output.

<level> : The PWM level, range 0..255

Set the Analog pin (0..7) to the PWM level, where 0 = 0% and 255 = 100% of the VCC voltage the PME is running at.

extpulse,<pin>,<0|1>,<duration>

<pin> : The IO pin on the PME board, range 0..13 for Digital output.

<0|1> : Select 0 for Off (low), and 1 for On (high) level output

<duration> : The time in milliseconds the IO pin state should be set, after which it is restored in the previous state.

Switch the pin to either low or high level output, and after the duration has passed, return to the previous state.

extlongpulse,<pin>,<0|1>,<duration>

<pin> : The IO pin on the PME board, range 0..13 for Digital output.

<0|1> : Select 0 for Off (low), and 1 for On (high) level output

<duration> : The time in seconds the IO pin state should be set, after which it is restored in the previous state.

Switch the pin to either low or high level output, and after the duration (seconds!) has passed, return to the previous state.

status,ext,<pin>

<pin> : The IO pin on the PME board, range 0..13 for Digital output, range 20..27 for the Analog pins A0..A7.

Report the current state/value for the pin selected.

Get Config Values

Get Config Values retrieves values or settings from the sensor or plugin, and can be used in Rules, Display plugins, Formula’s etc. The square brackets are part of the variable. Replace <taskname> by the Name of the task.

Config value

Information

[<taskname>#D.<port>]

<port> : Range 0..13, corresponding with D0..D13 on the PME.

Returns the current status (0/1) from the requested Digital port (pin) of the Pro Mini Extender.

[<taskname>#A.<port>]

<port> : Range 0..3 and 6..7, corresponding with A0..A7 on the PME.

Returns the current value (0..1023) at the requested Analog port (pin) of the Pro Mini Extender.

Port A4 and A5 should be avoided, as that’s occupied by the I2C connection at the PME. There is no check in the code to block those pins!

Change log

Changed in version 2.0:

added 2024-03: Add Input (switch) option.

added Major overhaul for 2.0 release.

Added in version 1.0:

added Initial release version.