SMT100 with 4 - 20 mA interface

The 4 - 20 mA interface or current loop is still very popular in process control automation. There are a couple of advantages:

  • Only 2 wires are required (if sensor is low power and requires less than 4 mA current)
  • Voltage drop along the interconnection wires does not degrade accuracy, so extremely long cables are possible
  • Broken cable can be identified (no current)
  • High noise immunity (because of relatively high currents)

The disadvantage is:

  • Power consumption high and relatively high supply voltages required (typically 12 V to 24 V DC)

Generally I prefer digital interfaces like RS-485, but easy to use  4 - 20 mA sensor are ideally suited for my farmsite so that even untrained personnel can install or replace sensors without configuration hassle.

The choice of 4 - 20 mA sensors for soil moisture measurement is quite limited. Besides other disadvantages, Chinese sensors like Sonbus SM2801 or those from Rika are not real 2 wire sensors. A converter module by Vegetronix for voltage output sensors does not help as well since it requires an external power supply, so no real 2 wire solution as well. Even higher quality sensors like Gropoint are not a 2 wire solution. In the end I only found one real 2 wire solution which is from Decagon (now Metergroup) with their MAS-1 (and probably some OEM variants which look exactly the same). Unfortunately the manual of the MAS-1 contained an unpleasant surprise. The accuracy in volumetric water content is 6% which is mediocre but acceptable. What is more worrying is that the sensor air shall transmit approximately between 3.4 mA and 4.7 mA. I believe this is quite a very large tolerance since I hoped that at least in air it should be quite close to 4 mA. Fortunately a 4 - 20 mA variant of the SMT100 recently came on the market. I already own a couple of SMT100 with RS-485 interface for my garden irrigation system which are working fine, so I decided to give it a try with a SMT100 4 - 20 mA, which arrived these days. My first test was current measurement in air and the SMT100 was 4.03 mA, so right on spot. Even with 100 m cable length no degradation could be observed. So this is a good start for my upcoming farmsite project I hopefully can report on in the future.

Loxone mit SMT100 Modbus

Es wird Frühling und Zeit die Bewässerungstechnik auf Vordermann zu bringen. Über die Loxone Steuerung hatte ich bereits in einem kleinen Blogbeitrag berichtet. Jetzt soll es etwas ausführlicher werden und ich bin dabei Schritt-für-Schritt Anleitungen zu erstellen.

Die erste Anleitung beschreibt, wie man einen SMT100 Modbus über die Modbus Extension von Loxone an die Steuerung anschließt.

Beispielprojekt Loxone

SMT100 Modbus mit ioBroker

Es gibt inzwischen so viele Smart Home Systeme, dass die Auswahl immer schwieriger wird. Ich kann mich noch gut an das Jahr 1982 erinnern, als an der Carnegie Mellon University ein Cola Automat mit dem Internet verbunden wurde. Damals hatte ich mich schon intensiv mit den dazugehörigen Datenübertragungsprotokollen TCP und IP beschäftigt, die auch heute noch die Grundlage des Internets bilden. Meine erste drahtlose TCP/IP Verbindung erfolgte mit 1200 baud Schrittgeschwindigkeit, ein Bruchteil der heutigen Übertragungsraten. Webtechnologien waren damals noch nicht erfunden, so dass ich mir mit Tastern, Glühlämpchen und einer alten Türklingel eine Alarmzentrale zur Überwachung von Weidezäunen baute. Heute probiere ich der Reihe nach die verschiedenen Smart Home Systeme durch, um die Vor- und Nachteile  der verschiedenen Möglichkeiten zu verstehen und die beste Auswahl zu treffen. ioBroker habe ich dabei schon etwas länger im Fokus. Mein erstes Ziel war auszuprobieren, wie leicht man ein Modbus Gerät an ioBroker ankoppeln kann. Als Standardtestobjekt habe ich dazu wieder den SMT100 in der Modbus Variante verwendet. Die Installation von ioBroker auf einem Raspberry Pi war problemlos. Dann habe ich den Modbus Adapter ausgewählt. Entscheidend sind die Einstellungen wie der USB Port für den angeschlossenen USB nach RS-485 Konverter.

Danacht geht es an das "Eingemachte" mit den Registereinstellungen und der Umrechnungsformel für Temperatur und Wassergehalt.

Der Test mit den aktuellen Daten war sofort erfolgreich.

Nach ein paar weiteren Schritten war dann eine kleine Visualisierung erstellt.

Nach dem ersten erfolgreichen Test plane ich weitere Experimente mit ioBroker.

SMT100 with LoRaWAN (TheThingsNetwork) and Dragino

After I have already carried out the first tests with LoRa and soil moisture sensors some time ago, a larger project is on the agenda for this year's gardening season.

Over the winter, I have been intensively occupied with LoRaWAN and also canvassed the relevant providers. At Dragino I found a very cheap LoRa module, which has a RS-485 interface. The advantage is that you can easily connect a SMT100 soil moisture sensor with Modbus (RS-485). The LoRa module also takes care of the power supply of the SMT100. The Litihium battery is even already supplied by Dragino. It's almost a plug-and-play system except for some minor software configuration work. What do you need to get started:

  1. Dragino RS-485BL LoRaWAN RS-485/UART converter
  2. SMT100 RS-485 soil moisture sensor from TRUEBNER (Modbus version)
  3. USB to TTL cable (3.3V) for software configuration

and of course a LoRaWAN gateway nearby. For me it is a TheThingsNetwork gateway, but other LoRaWAN systems should also work. The LoRa module must be registered with the LoRaWAN operator. For TheThingsNetwork, Dragino provides instructions in the LoRa module manual. TheThingsnetwork gateway near me still uses version 2 of TheThingsnetwork. In the course of the year 2021 it should be changed to version 3. Then the settings will change a bit. But now we stay with version 2 for the time being.

In the box of the LoRa module there is a sticker with all possible keys, EUIs, addresses and the serial number.

  • DEV ADDR
  • DEV EUI
  • APP EUI
  • APP KEY
  • APPSKEY
  • NETSKEY

After logging into TheThingsNetwork Console a new application is created. The APP EUI from the sticker is added via addEUI. Then a new device is created. It is very important to enter the DEV EUI, the APP EUI and the APP KEY from the sticker. Voilá, that's it for now with TheThingsNetwork and we go to the LoRa module. (Note: With other keys and EUIs you can certainly also work, but then have greater configuration effort on the module side).

The next step is to connect the SMT100 RS-485 soil moisture sensor with the LoRa module as follows (left green socket for screwing, attention: look up exact assignment in the Dragino manual!):

  • Brown wire +5 V
  • White wire GND
  • Green wire RS-485 A
  • Yellow wire RS-485 B

Then connect the USB to TTL cable for configuration (right socket for pin headers, attention: look up exact assignment in Dragino manual!):

  • GND
  • UART_TXD
  • UART_RXD

Please make sure that the USB TTL cable has 3.3 V level (TX from LoRa module to RX from cable, RX from LoRa module to TX from cable, if necessary check exactly how the cables are assigned and the connections are defined). I used a cheap cable from Ebay (about 4 Euro) and made sure that a FT232 USB chip is used. This usually does not give driver problems. I prefer to use HTerm as terminal program. The switches on the LoRa module must be set to 5V and Flash. The jumper for the supply of the module with the battery voltage must of course also be plugged. in HTerm you see the start of the module after plugging the power supply jumper.

Now you can configure the SMT100 by entering the password in HTerm (123456) and then send AT commands (Attention: Always capitalize commands and don't forget the CR at Send on Enter).

  • AT+BAUDR=9600 (9600 baud)
  • AT+PARITY=2 (even parity)
  • AT+5VT=100 (wait 100ms after turning on the 5 V supply for the sensor)
  • AT+MBFUN=1 (enable Modbus)
  • AT+COMMAND1=fd 03 00 00 00 01,1 (Temperature)
  • AT+COMMAND2=fd 03 00 01 00 01,1 (Soil moisture)
  • AT+DATACUT1=0,0,0
  • AT+DATACUT2=0,0,0
  • AT+TDC=60000 (Transmission interval, 60 s = 60000 ms)

You may check settings with:

  • AT+BAUDR=?
  • AT+PARITY=?
  • AT+5VT=?
  • AT+MBFUN=?
  • AT+COMMAND1=?
  • AT+COMMAND2=?
  • AT+DATACUT1=?
  • AT+DATACUT2=?
  • AT+TDC=?

The communication between the LoRa module and the connected SMT100 can be tested using AT+CFGDEV. Here is an example:

For explanation you should have the application note for Modbus from TRUEBNER ready.

The byte sequence fd 03 00 00 00 01 sends a Modbus broadcast to the one connected sensor and expects the temperature. The temperature is stored in the response in the 4th and 5th byte as a 16 bit number. If 2d e3 is converted to a decimal value, 11747 is obtained. If 11747 is divided by 100 and 100 is subtracted, 17.47°C is obtained. The byte sequence fd 03 00 01 00 01 sends a Modbus broadcast to the one connected sensor and expects the soil moisture. The soil moisture is stored in the response in the 4th and 5th byte as a 16 bit number. If 0b c3 is converted to a decimal value, 3011 is obtained. If 3011 is divided by 100, 30.11% is obtained as volumetric water content.

After the successful test the USB cable can be removed and the LoRa module is ready for operation. Now you can go back to TheThingsboard and watch the LoRa communication, but before that you should set a TTN decoder, so that the transmitted byte sequences are interpreted correctly. The decoder used here looks like this and extracts battery voltage, temperature and soil moisture from the data. (Note: The LoRa module transmits the battery voltage and also a payload version value by default, but we do not consider it here).

The following screenshot shows the data packets with the individual bytes and the decoding.

What is the next step? There is still a visualization missing, for which there are several possibilities. I use MQTT to fetch the measured values from TheThingsNetwork and then import the data into my Thingsboard system. I will describe that soon. For now I enjoy the spring sun with coffee and a delicious piece of crumble cake.

 

 

 

 

 

SMT100 mit LoRaWAN (TheThingsNetwork) und Dragino

Nachdem ich vor einiger Zeit schon einmal mit LoRa und Bodenfeuchtesensoren die ersten Versuche durchgeführt habe, steht für die diesjährige Gartensaison ein größeres Projekt an.

Über den Winter habe ich mich intensiv mit LoRaWAN beschäftigt und auch die einschlägigen Anbieter abgeklappert. Bei Dragino bin ich fündig geworden und zwar mit einem sehr günstigen LoRa-Modul, das eine RS-485 Schnittstelle hat. Der Vorteil ist, dass man ganz einfach einen SMT100 Bodenfeuchtesensor mit Modbus (RS-485) anschließen kann. Das LoRa-Modul übernimmt dabei auch die Stromversorgung des SMT100. Die Litihium Batterie wird von Dragino sogar schon mitgeliefert. Es ist bis auf ein paar kleine Softwarekonfigurationsarbeiten fast schon ein Plug-and-Play System. Was braucht man für den Start:

  1. Dragino RS-485BL LoRaWAN RS-485/UART converter
  2. SMT100 RS-485 Bodenfeuchtesensor von TRUEBNER (Modbus Version)
  3. USB nach TTL Kabel (3.3V) zum Konfigurieren der Software

und natürlich ein LoRaWAN Gateway in der Nähe. Bei mir ist es ein TheThingsNetwork Gateway, andere LoRaWAN Systeme sollten aber auch funktionieren. Das LoRa-Modul muss beim LoRaWAN Betreiber angemeldet werden. Für das TheThingsNetwork stellt Dragino im Handbuch zum LoRa-Modul die entsprechenden Anweisungen bereit. Das TheThingsnetwork Gateway bei mir in der Nähe nutzt noch die Version 2 von TheThingsnetwork. Im Laufe des Jahres 2021 soll auf Version 3 umgestellt werden. Dann werden sich die Einstellungen etwas ändern. Jetzt bleiben wir aber erst einmal bei Version 2.

Im Karton des LoRa-Moduls befindet sich ein Aufkleber mit allen möglichen Keys, EUIs, Adressen und der Seriennummer.

  • DEV ADDR
  • DEV EUI
  • APP EUI
  • APP KEY
  • APPSKEY
  • NETSKEY

Nach dem Einloggen in die TheThingsNetwork Console wird eine neue Application angelegt. Die APP EUI vom Aufkleber fügt man über addEUI hinzu. Dann wird ein neues Device erstellt, Ganz wichtig ist jetzt, dass man die DEV EUI, die APP EUI und den APP KEY vom Aufkleber einträgt. Voilá, das war es erst einmal mit TheThingsNetwork und wir gehen zum LoRa-Modul. (Hinweis: Mit anderen Keys und EUIs kann man sicher auch arbeiten, hat dann aber größeren Konfigurationsaufwand auf der Modulseite).

Im nächsten Schritt verbindet man den SMT100 RS-485 Bodenfeuchtesensir mit dem LoRa-Modul wie folgt (linke grüne Leiste zum Schrauben, Achtung: genaue Belegung im Dragino Handbuch nachschauen!):

  • Brauner Draht an +5 V
  • Weißer Draht an GND
  • Grüner Draht an RS-485 A
  • Gelber Draht an RS-485 B

Dann schließt man zum Konfigurieren das USB nach TTL Kabel an (rechte Buchse für Stiftleisten, Achtung: genaue Belegung im Dragino Handbuch nachschauen!):

  • GND
  • UART_TXD
  • UART_RXD

Bitte darauf achten, dass das USB TTL Kabel 3.3 V Pegel hat (TX vom LoRa-Modul auf RX vom Kabel, RX vom LoRa-Modul auf TX vom Kabel, ggf. genau nachschauen, wie die Kabel belegt und die Anschlüsse definiert sind). Ich habe ein günstiges Kabel von Ebay verwendet (ca. 4 Euro) und darauf geachtet, dass ein FT232 USB Chip verwendet wird. Das gibt in der Regel keine Treiberprobleme. Ich verwende als Terminalprogramm am liebsten HTerm. Die Schalter auf dem LoRa-Modul müssen auf 5V und Flash stehen. Der Jumper für die Versorgung des Moduls mit der Batteriespannung muss natürlich auch gesteckt sein. in HTerm sieht man nach dem Stecken des Stromversorgungsjumpers das Starten des Moduls.

Jetzt geht es an die Konfiguration des SMT100.Dazu gibt man in HTerm das Passwort ein (123456) und kann danach AT Kommandos absetzen (Achtung: Kommandos immer groß schreiben und nicht das CR bei Send on Enter vergessen!).

  • AT+BAUDR=9600 (9600 baud)
  • AT+PARITY=2 (gerade Parität)
  • AT+5VT=100 (100ms warten nach dem Einschalten der 5 V Versorgung für den Sensor)
  • AT+MBFUN=1 (Modbus einschalten)
  • AT+COMMAND1=fd 03 00 00 00 01,1 (Temperatur abfragen)
  • AT+COMMAND2=fd 03 00 01 00 01,1 (Bodenfeuchte abfragen)
  • AT+DATACUT1=0,0,0
  • AT+DATACUT2=0,0,0
  • AT+TDC=60000 (Sendeintervall einstellen, 60 s = 60000 ms)

Überprüfen geht durch:

  • AT+BAUDR=?
  • AT+PARITY=?
  • AT+5VT=?
  • AT+MBFUN=?
  • AT+COMMAND1=?
  • AT+COMMAND2=?
  • AT+DATACUT1=?
  • AT+DATACUT2=?
  • AT+TDC=?

Die Kommunikation zwischen dem LoRa-Modul und dem angeschlossenen SMT100 kann mit Hilfe von AT+CFGDEV getestet werden. Hier ist ein Beispiel:

Zur Erläuterung sollte man die Application Note zu Modbus von TRUEBNER bereithalten.

Die Bytetolge fd 03 00 00 00 01 sendet einen Modbus Broadcast an den einen angeschlossen Sensor und erwartet die Temperatur. Die Temperatur ist in der Antwort im 4. und 5. Byte gespeichert als 16 bit Zahl gespeichert. Wandelt man 2d e3 in einen Dezimalwert um, so erhält man 11747. Teilt man 11747 durch 100 und zieht noch 100 ab, so erhält man 17,47°C. Die Bytefolge fd 03 00 01 00 01 sendet einen Modbus Broadcast an den einen angeschlossen Sensor und erwartet die Bodenfeuchte. Die Bodenfeuchte ist in der Antwort im 4. und 5. Byte gespeichert als 16 bit Zahl gespeichert. Wandelt man 0b c3 in einen Dezimalwert um, so erhält man 3011. Teilt man 3011 durch 100, so erhält man 30,11% als volumetrischen Wassergehalt.

Nach dem erfolgreichen Test kann das USB Kabel wieder entfernt werden und das LoRa-Modul ist betriebsbereit. Jetzt kann man wieder zurück zu TheThingsboard und kann die LoRa Kommunikation beobachten.Vorher sollte man jedoch einen TTN Decoder einstellen, damit die übertragenen Bytefolgen auch richtig interpretiert werden. Der hier verwendete Decoder sieht so aus und extrahiert Batteriespanung, Temperatur und Bodenfeuchte (moisture) aus den Daten. (Hinweis: Das LoRa Modul überträgt standardmäßig die Batteriespannung und auch einen Payload Versionswert, den wir aber hier nicht betrachten).

Der nachfolgende Screenshot zeigt die Datenpakete mit den einzelnen Bytes und der Decodierung an.

Was kommt als nächster Schritt? Es fehlt ja noch eine Visualiserung.Dafür gibt es verschiedene Möglichkeiten. Ich nutze MQTT zum Abholen der Messwerte bei TheThingsNetwork und spiele die Daten dann in mein Thingsboard System ein. Das werde ich demnächst beschreiben. Jetzt genieße ich erst einmal die Frühlingssonne mit Kaffee und einem leckeren Stück Streuselkuchen.

 

 

 

 

 

 

 

SMT50 mit ESP8266 und Tasmota

Der ESP8266 ist ein sehr preisgünstiger Mikrocontroller mit eingebautem Wifi, der sich für drahtlose Sensoranwendungen perfekt eignet. Zur Bewässerungssteuerung soll der Bodenfeuchtensor SMT50 von TRUEBNER angeschlossen werden. Der SMT50 liefert zwei analoge Ausgangssignale. Da der ESP8266 nur einen analogen Eingang besitzt, wird nur der Bodenfeuchtewert oder der Temperaturwert übertragen. Mit einem zusätzlichen externen AD-Wandler können auch beide Werte gesendet werden. In diesem Projekt soll jedoch die einfachste Lösung erprobt werden.

Benötigt werden:

Verbinden Sie das NodeMCU-Board mit dem Computer und starten Sie das Flashtool als Administrator. Wählen Sie anschließend den COM-Port und die Firmware aus. Stellen Sie zuletzt „Erase flash“ auf „yes, wipes all“ und drücken Sie „Flash NodeMCU“.

Trennen Sie nach dem Flashen das Micro-USB-Kabel und verbinden Sie es erneut. Es sollte ein WLAN-Access-Point mit dem Namen tasmota-xxxx auftauchen, mit dem Sie sich verbinden müssen. Nun öffnet sich automatisch der Browser, indem WLAN-Einstellungen konfiguriert und gespeichert werden können. Stellen Sie SSID und Passwort Ihres WLANs ein. Dann "SAVE" drücken und das NodeMCU startet neu und sollte sich mit Ihrem WLAN automatisch verbinden.

Über das Control-Panel Ihres Routers können Sie die IP-Adresse des NodeMCU herausfinden, welche Sie in der Browser-Suchleiste eingeben müssen. Es wird eine Weboberfläche zum Konfigurieren angezeigt, durch die man analoge- bzw. digitale Ein- und Ausgänge, sowie die MQTT-Verbindung einstellen kann. Unter „Configure“ --> „Configure Modul“ muss nun der Modultyp ausgewählt und „A0 ADC0“ auf „Analog (1)“ gestellt werden.

Geben Sie anschließend unter „Configuration“ --> „Configure MQTT“ den MQTT-Host, den Port, die ClientID, sowie den Benutzernamen und das Passwort an und speichern Sie es. Das fertige Topic lautet tele/“Ihr Topic“/SENSOR. In idesem Beispiel wurde zum Test der Public Broker von HiveMQ verwendet.

Stecken Sie danach das Mikro-USB-Kabel aus dem NodeMCU und verbinden Sie den SMT50 wie folgt:
Braun an Pin „3V3“
Weiß an Pin „GND“
Gelb für den volumetrischen Wassergehalt, oder Grün für die Temperatur an den Pin „A0“.

Stecken Sie das Mikro-USB-Kabel wieder in den NodeMCU.

Wahlweise können Sie eine MQTT-Dashboard-App aus dem AppStore oder PlayStore installieren und identisch zur Ihrer MQTT-Konfiguration einstellen.

Auf dem PC können Sie mit Hilfe von MQTT.fx auch die Daten anschauen. Die Konfiguration sieht so aus:

Danach kann man das Topic subscriben und die Daten sehen.

Voilà, es funktionniert!