# JeeLinkLogMQTT Backend for JeeLabs JeeLink receiver. Receives sensor data from LaCrosse 868MHz temperature/humidity sensors, logs data to InfluxDB and publishes via MQTT. Sensor type tested working: __LaCrosse/TechnoLine TX29 DTH-IT__. ## Installation Requires Python 3 (default on Debian/RaspberryOS Buster or Bullseye). - install Python3 PIP: $ sudo apt-get install python3-pip - install required Python modules: pip3 install pyserial influxdb paho-mqtt pyyaml - copy folder __jeelinklog__ to /home/pi - edit config files as needed. A minimum of 1 sensor must be configured before starting, so leave one from the examples there, configure it as desired and then find out the ID of your sensor and edit it afterwards. - test if it works: ``` cd /home/pi ./jeelinklog.py -v (start in verbose mode) ``` - put batteries in one sensor - you should see some output showing sensor data. - Find your sensor ID: - either look on the verbose output and find the one stating __Batt_New: 1__ - or have a look in the logfile __/home/pi/logs/jeelinklog/jeelink_new_sensors.log__ - or check the subfolder __/home/pi/logs/jeelinklog/new__ - here JeelinkLog will create a file for each sensor received with "Batt_New flag on". Filename = LaCrosse ID. - exit verbose mode (ctrl+C) - Configure Sensor ID in jeelinklog_sensors.yml - delete corresponding files in __/home/pi/logs/jeelinklog/new__ and __/home/pi/logs/jeelinklog/unknown__ - install systemd service: ``` cd /home/pi/jeelinklog sudo cp jeelinklog.service /lib/systemd/system sudo systemctl daemon-reload sudo systemctl enable jeelinklog.service sudo systemctl start jeelinklog.service ``` - check if service is running: ``` sudo systemctl status jeelinklog.service ``` ## Configuration The configuration is split in the following files: - __jeelinklog.ini__: base configuration - __jeelinklog_influxdb.yml__: YAML configuration file for InfluxDB instances - __jeelinklog_sensors.yml__: YAML configuration containing the sensors ### configuring InfluxDB-Instances __jeelinklog_influxdb.yml__ format: temphum: instance name used in sensor configuration host: localhost port: 8086 username: jeelinklog [optional] comment out if authentication is not used password: password [optional] comment out if authentication is not used database: TempHum InfluxDB database name - must already exist measurement: TempHum InfluxDB measurement name, will be added automatically if it does not already exist fieldnames: temperature: temp humidity: hum datatypes: temperature: float humidity: int You can add as many InfluxDB instances as you need. Please mind correct indenting in YAML files! ### configuring Sensors __jeelinklog_sensors.yml__ format: Aussen: Sensor name LaCrosseID: 1 LaCrosse Sensor ID, randomly generated on battery change DomoticzIdx: 94 [optional] Sensor ID in Domoticz (deprecated) Topic_Temp: "Test/Atemp" [optional] additional MQTT topic to publish temperature values of that sensor Topic_Hum: "Test/Ahum" [optional] additional MQTT topic to publish humidity values of that sensor InfluxDB_Instance: TempHum InfluxDB instance name to use (as set in jeelinklog_influxdb.yml) isOutsideTempSensor: true true or false DomoticzIdx can be commented out or removed if not needed. Topic_Temp and Topic_Hum is optional, can be left commented or removed. InfluxDB_Instance __MUST__ be a valid name configured in __jeelinklog_influxdb.yml__. #### Outside sensors __isOutsideTempSensor: true__ will include that sensor in mean/average outside temperature calculation. Set it to true on all sensors that are (properly) located outside to enhance accuracy. You can add as many sensors as you need. Please mind correct indenting in YAML files! ## MQTT output All data is published to ``LaCrosse/`` topic-prefix (can be configured in jeelinklog.ini). [mqtt] topic_prefix = LaCrosse For sensors with a configured ``Topic_Temp`` and/or ``Topic_Hum`` in ``jeelinklog_sensors.yml``, values will be published to these topics additionally. Outside temperature/humidity (mean/average of multiple sensors if configured) is published to topics set in ``jeelinklog.ini``: [mqtt] topic_prefix_outside_temphum = wetter/atemphum # additional single topics for outside temp/hum topic_outside_temp = wetter/atemp topic_outside_hum = wetter/ahum Example output: | Topic | Payload | |-----------|----------| | LaCrosse/Sensorname/temperature | 20.2 | | LaCrosse/Sensorname/humidity | 56 | | LaCrosse/Sensorname/battery | OK | | LaCrosse/Sensorname/batteryNew | NO | | LaCrosse/Sensorname/availability | available | | LaCrosse/Sensorname/lastUpdate | 2022-11-08 09:22:42 | | LaCrosse/Sensorname/json | {"temperature":20.2, "humidity":56, "battery":"OK"} | | LaCrosse/Sensorname/TempHumText | 20.2° 56% |