Skip to content

Trickx/espurna

 
 

Repository files navigation

ESPurna Lacrosse Firmware

Setup

Blockdiagramm

Introduction

A new board has been defined for ESPurna: "lacrossegw". It's the new default for this branch (default_envs = lacrossegw).
It makes use of FHEM LaCrosse libraries found here: FHEM LaCrosseGateway V1.x
The idea of this project is to receive LaCrosse transmitter such as Proficell/Technoline TX 29-IT and directly forward received data to MQTT as well as to InfluxDB.
The beauty of this project is a configurable mapping of sender IDs to customizable strings e.g. its location.

Configuration

Let have a first look into the messages pane of the WebUI. I think column names are self-explanatory. They reflect the data fields received within it Lacrosse IT+ protocol.

A special case are sender like the LaCrosse/Technoline TX25. Such sender offer to attach a 2nd external temperature sensor. There are many tweaks to re-use this interface for other types of sensors such as illumination, water detection or whatever. The TX25 sends 2 different packets types indicated by their humidity values. The example below shows TX25 sender with IDs 1, 14, 34 and 42. The internal temperature sensor is indicated by a humidity = 106, while the external temperature sensor is indicated by humidity = 125.

Humidity values greater 100 are dropped. They are neither forwarded to MQTT to to InfluxDB.

Humidity value = 125 triggers a special handling, defined below.

Messages Table

Mapping

LaCrosse sensors select a random ID when powered up. In case of a battery replacement the ID will change. This behavior is annoying when using the ID to reference to historic data for example within an InfluxDB. Here come the mapping feature into the game. Node IDs can be mapped onto pre-defined MQTT-topics and InfluxDB-tags. The following table maps node ID "14" onto "Arbeitsz" before sending it to an MQTT broker or InfluxDB. This way you can keep all tags of an InfluxDB measurement stable over the years. After an battery replacement you simply re-adjust the mapping accordingly.

The default topic is used to define the structure of all MQTT topics. If the node ID is known, the {node} is replaced by the string defined inside the 3rd column (topic). If the ID is not known, {node} is replaced by the ID itself. {key} is substituted by the sensor type (temperature and humidity).

Resulting MQTT topics for Node ID = 14: "espurna/rfm69gw/Arbeitsz/Temperature" and "espurna/rfm69gw/Arbeitsz/Humidity". Resulting MQTT topics for Node ID = 13: "espurna/rfm69gw/13/Temperature" and "espurna/rfm69gw/13/Humidity".

Special case is humidity = 125, see below.

Mapping

MQTT

Special Case: Humidity = 125

As you can easily realize a humidity of 125% is quiet humid. The LaCrosse IT+ protocol uses this value to indicate the temperature of a 2nd external sensor. If the 2nd column of the mapping table remains empty, "Temperature_2" is used, otherwise the the sensor type defined in column 2 is used, see example below.

Board

Top

Bottom

https://github.com/hallard/NodeMCU-GatewayESPurna

Housing

GrabCAD | Fusion360 export
STL files for 3D printers: Top | Bottom RFM69 Front RFM69 Back

Device

Device

About

Home automation firmware for ESP8266-based devices

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 69.9%
  • C 17.8%
  • HTML 5.8%
  • JavaScript 3.3%
  • Python 2.4%
  • CSS 0.5%
  • Shell 0.3%