diff --git a/docs/source/Plugin/P004_DS18b20.rst b/docs/source/Plugin/P004_DS18b20.rst
index de4c4061c..dcb081b00 100644
--- a/docs/source/Plugin/P004_DS18b20.rst
+++ b/docs/source/Plugin/P004_DS18b20.rst
@@ -1,4 +1,3 @@
-.. include:: ../Plugin/_plugin_substitutions_p00x.repl
.. _P004_DS18b20_page:
.. |br| raw:: html
@@ -6,11 +5,8 @@
-DS18b20
-=======
-
-|P004_typename|
-|P004_status|
+DS18b20 temperature sensor
+==========================
.. image:: P004_DS18b20_1.jpg
:width: 2055px
@@ -26,7 +22,7 @@ Introduction
.. note:: Beware of cheap remakes from the Chinese market. They might have wider tolerance and/or different pinouts.
-The DS18B20 manufactured by Dallas and Maxim is a very simple to use temperature sensor with a tolerance of ±0.5°C.
+ The DS18B20 manufactured by Dallas and Maxim is a very simple to use temperature sensor with a tolerance of ±0.5°C.
Its advantages: Very simple to use due to "1-wire" data protocol. Chainable, it is possible to chain up to 100
sensors on one cable (remember ESP Easy has 12 tasks max...). No calibration necessary if the tolerance fits your
@@ -76,8 +72,8 @@ Setup
-----
.. image:: P004_Setup_DS18b20_1.png
- :width: 1200px
- :height: 1617px
+ :width: 1145px
+ :height: 735px
:scale: 60 %
:alt: Task Settings
:align: left
@@ -94,15 +90,96 @@ Task settings
Sensor
^^^^^^
-* **GPIO <--> 1-wire**: Pulse input is generally set to **GPIO 14 (D5)**.
+GPIO <--> 1-wire
+""""""""""""""""
-after pressing submit the following settings are revealed:
+Pin used for communicating with the Dallas sensor(s).
+
+Please note the pin must be pulled up by a resistor, so only use pins that can be in a pulled up state during boot (thus NOT use GPIO 15 on ESP8266).
+
+Number Output Values
+""""""""""""""""""""
+
+(Added 2020-11-16)
+
+Selector to set number of Dallas sensors for this task.
+
+Number of address selectors is based on the set Number Output Values.
+
+If more then one sensor is set to a task, all sensors will be sent a start measurement command in the order they are selected.
+After the expected reading period (depending on the set resolution) the sensors will be read in the same order.
+
+This means their measurement period overlap, which can be of great use to make sure the temperature values are taken at the same moment.
+
+Not all controllers can handle reading multiple sensors in a single run.
+For example you cannot send directly to Domoticz controllers running multiple sensors in the same task.
+If it is still needed to have multiple sensors in the same task, one can still send the data via rules to Domoticz.
+
+.. note:: Interleaved reading of multiple sensors on a task can only be done if the sensors are powered via their Vdd pin.
+ Parasite powered sensors are not supported in this mode.
+
+
+Device address
+""""""""""""""
+
+Selector for a specific **sensor address**.
+
+If a found sensor is already assigned (and saved) to a task, the task name and variable name is shown in the combo box. (Added 2020-11-16)
+
+.. image:: P004_Setup_DS18b20_2.png
+ :scale: 60 %
+ :alt: Dallas sensor selection
+ :align: left
+
+|br|
+
+.. note:: It may be hard to keep these addresses apart.
+ Either add them one by one, or heat up a single one by holding it in your hand.
+ When the web page for a Dallas temperature task is loaded the bus is scanned thus newly attached sensors will then show up in the list.
+
+
+Device resolution
+"""""""""""""""""
+
+Possible values: 9..12 bits
+
+The resolution determines the time needed for taking a measurement.
+At 12 bit resolution a measurement takes roughly 800 msec.
+
+As temperatures do not change very fast usually a high accuracy can be chosen without problem.
+
+N.B. resolution applies to all sensors for this task.
+
+Error State Value
+"""""""""""""""""
+
+Select the value to send if the sensor could not be read.
+
+Almost all controllers will not send values if the value is ``NaN``.
+By chosing a specific value one can make sure values are sent.
+
+Statistics
+^^^^^^^^^^
+
+Dallas 1-wire sensors may sometimes return a read error.
+A typical setup running Dallas sensors on ESPEasy should have less than 1-in-1000 reads fail.
+
+A failed read attempt will be replaced by the set value of the **Error State Value**.
+
+The number of read errors may depend on a number of factors, like cabling or using non genuine sensors.
+
+Some known counterfeit sensors are known to cause problems when used with > 3 on the same bus.
+Others always report being "Parasite Powered" while they are not.
+
+The Statistics can help determining why a setup of sensors may not perform as well as it should.
+
+.. image:: P004_Setup_DS18b20_3.png
+ :scale: 60 %
+ :alt: Dallas sensor selection
+ :align: left
+
+|br|
-* **Device address**: Pick your **sensor address**, hold your hand around it to see which one is changing temperature.
- Every DS18b20 has a unique address burned in at production time.
- This UID (Unique IDentifier) is used to tell the sensors apart on one single cable.
-* **Device resolution**: 9..12 bits, the **lower the resolution the accuracy decreases and the speed increases**.
- As temperatures do not change very fast usually a high accuracy can be chosen without problem.
.. note:: If you need a star infrastructure or stubs or if you need just longer cabling there is a way out.
One line runs on one GPIO. But nobody said you can't use two GPIO's. If the cabling gets too long or
@@ -115,6 +192,8 @@ after pressing submit the following settings are revealed:
(or too thin for the given distance). Keep cabling away from other cables to avoid interferences. If necessary place a
10µF capacitor on the sensors between 3.3v and GND.
+
+
Data Acquisition
^^^^^^^^^^^^^^^^
diff --git a/docs/source/Plugin/P004_Setup_DS18b20_1.png b/docs/source/Plugin/P004_Setup_DS18b20_1.png
index 8ff58cade..3a9537b23 100644
Binary files a/docs/source/Plugin/P004_Setup_DS18b20_1.png and b/docs/source/Plugin/P004_Setup_DS18b20_1.png differ
diff --git a/docs/source/Plugin/P004_Setup_DS18b20_2.png b/docs/source/Plugin/P004_Setup_DS18b20_2.png
new file mode 100644
index 000000000..1d59dabc4
Binary files /dev/null and b/docs/source/Plugin/P004_Setup_DS18b20_2.png differ
diff --git a/docs/source/Plugin/P004_Setup_DS18b20_3.png b/docs/source/Plugin/P004_Setup_DS18b20_3.png
new file mode 100644
index 000000000..a2a99f614
Binary files /dev/null and b/docs/source/Plugin/P004_Setup_DS18b20_3.png differ
diff --git a/misc/TTN/packed_converter.js b/misc/TTN/packed_converter.js
index 139032064..6b89182f4 100644
--- a/misc/TTN/packed_converter.js
+++ b/misc/TTN/packed_converter.js
@@ -31,7 +31,12 @@ function Converter(decoded, port) {
case 4:
converted.name = "Dallas";
+ // For compatibility reasons, also include temp.
converted.temp = converted.val_1;
+ converted.temp1 = converted.val_1;
+ converted.temp2 = converted.val_2;
+ converted.temp3 = converted.val_3;
+ converted.temp4 = converted.val_4;
break;
case 5:
diff --git a/src/src/Helpers/_Plugin_SensorTypeHelper.cpp b/src/src/Helpers/_Plugin_SensorTypeHelper.cpp
index 3fee28ac1..a4eb88bc2 100644
--- a/src/src/Helpers/_Plugin_SensorTypeHelper.cpp
+++ b/src/src/Helpers/_Plugin_SensorTypeHelper.cpp
@@ -118,6 +118,7 @@ void sensorTypeHelper_webformLoad(struct EventStruct *event, byte pconfigIndex,
choice = event->sensorType;
PCONFIG(pconfigIndex) = static_cast(choice);
}
+ String outputTypeLabel = F("Output Data Type");
if (Device[DeviceIndex].OutputDataType == Output_Data_type_t::Simple) {
switch(event->sensorType) {
case Sensor_VType::SENSOR_TYPE_SINGLE:
@@ -133,9 +134,9 @@ void sensorTypeHelper_webformLoad(struct EventStruct *event, byte pconfigIndex,
break;
}
}
+ outputTypeLabel = F("Number Output Values");
}
-
- addRowLabel(F("Output Data Type"));
+ addRowLabel(outputTypeLabel);
addSelector_Head(PCONFIG_LABEL(pconfigIndex));
for (byte x = 0; x < optionCount; x++)
@@ -149,9 +150,13 @@ void sensorTypeHelper_webformLoad(struct EventStruct *event, byte pconfigIndex,
"");
}
addSelector_Foot();
- addFormNote(F("Changing 'Output Data Type' may affect behavior of some controllers (e.g. Domoticz)"));
-
- // addFormSelector(F("Output Data Type"), PCONFIG_LABEL(pconfigIndex), 11, options, optionValues, choice);
+ {
+ String note;
+ note = F("Changing '");
+ note += outputTypeLabel;
+ note += F("' may affect behavior of some controllers (e.g. Domoticz)");
+ addFormNote(note);
+ }
}
void sensorTypeHelper_saveOutputSelector(struct EventStruct *event, byte pconfigIndex, byte valueIndex, const String& defaultValueName)