Help - docker install of emonhub and emoncms

Hi all,

I’m literally pulling my hair out trying to install OEM.

I first tried to install using the instructions at GitHub - Open-Building-Management/compose-files: compose files to use with docker-compose. Everything loads but I can’t receive any data. I am using two emonTH’s with the Jeelink to USB interface.

Here are my config files:

compose_emonhub.yaml

services:
  emonhub:
    image: alexjunk/emonhub
    volumes:
      - ./emonhub.conf:/opt/openenergymonitor/emonhub/conf/emonhub.conf
      - /dev:/dev
    device_cgroup_rules:
      - 'c 204:* rmw'
    command: /opt/openenergymonitor/emonhub/src/./emonhub.py
    network_mode: service:emoncms
    restart: always
    devices:
      - /dev/ttyUSB0:/dev/ttyUSB0

compose.yaml

services:
  emoncms:
    image: alexjunk/emoncms
    volumes:
      - /data:/data
    environment:
      - TZ=Europe/Paris
      - REDIS_BUFFER=1
      - EMONCMS_LOG_LEVEL=2
      - MYSQL_DATABASE=emoncms
      - MYSQL_USER=emoncms
      - MYSQL_PASSWORD=emonpiemoncmsmysql2016
      - MQTT_USER=emonpi
      - MQTT_PASSWORD=emonpimqtt2016
      - MQTT_HOST=localhost
      - MQTT_BASETOPIC=emon
      - MQTT_CLIENT_ID=emoncms
      - MQTT_LOG_LEVEL=error
      - CRT_FILE=/etc/ssl/apache2/server.pem
      - KEY_FILE=/etc/ssl/apache2/server.key
      - CNAME=localhost
      - CUSTOM_APACHE_CONF=0
      - USE_HOSTNAME_FOR_MQTT_TOPIC_CLIENTID=0
    ports:
      - 7443:443
      - 8081:80
      - 9883:1883
    restart: always

emonhub.yaml

#######################################################################
#######################    emonHub  settings    #######################
#######################################################################
[hub]
### loglevel must be one of DEBUG, INFO, WARNING, ERROR, and CRITICAL
loglevel = DEBUG

### Autoconf is used to automatically add node decoders
### If you have unknown nodes appearing disable this feature
### Make sure to restart emonHub after changing this
autoconf = 0

#######################################################################
#######################       Interfacers       #######################
#######################################################################
[interfacers]
[[jeelink]]
    Type = EmonHubOEMInterfacer
    [[[init_settings]]]
        com_port = /dev/ttyUSB0
        com_baud = 38400
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        subchannels = ToRFM12,
        nodename = RF

[[MQTT]]

   Type = EmonHubMqttInterfacer
   [[[init_settings]]]
      mqtt_host = 127.0.0.1
      mqtt_port = 9883
      mqtt_user = 'emonpi'
      mqtt_passwd = 'emonpimqtt2016'

   [[[runtimesettings]]]
      pubchannels = ToRFM12,
      subchannels = ToEmonCMS,

      # emonhub/rx/10/values format
      # Use with emoncms Nodes module
     node_format_enable = 1
      node_format_basetopic = emonhub/

      # emon/emontx/power1 format - use with Emoncms MQTT input
      # http://github.com/emoncms/emoncms/blob/master/docs/RaspberryPi/MQTT.md
      nodevar_format_enable = 1
      nodevar_format_basetopic = emon/

      # Single JSON payload published  - use with Emoncms MQTT
      node_JSON_enable = 0
      node_JSON_basetopic = emon/

[[emoncmsorg]]
   Type = EmonHubEmoncmsHTTPInterfacer
   [[[init_settings]]]
   [[[runtimesettings]]]
      pubchannels = ToRFM12,
      subchannels = ToEmonCMS,
      url = http://localhost:8081
      apikey = 79a6adf358a7528f33615bfe95e2575e
      senddata = 1                    # Enable sending data to Emoncms.org
      sendstatus = 1                  # Enable sending WAN IP to Emoncms.org MyIP > https://emoncms.org/myip/list
      interval = 30                   # Bulk send interval to Emoncms.org in seconds

#######################################################################
#######################          Nodes          #######################
#######################################################################
[nodes]
[[19]]
   nodename = emonTH_19
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[20]]
    nodename = emonTH_20
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[21]]
    nodename = emonTH_21
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[22]]
    nodename = emonTH_22
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[23]]
    nodename = emonTH_23
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[24]]
    nodename = emonTH_24
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

[[25]]
    nodename = emonTH_25
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p
[[26]]
    nodename = emonTH_26
    [[[rx]]]
        names = temperature, external temperature, humidity, battery, pulseCount
        datacodes = h,h,h,h,L
        scales = 0.1,0.1,0.1,0.1,1
        units = C,C,%,V,p

Any help appreciated.

Welcome, @jfc to the OEM forum.

I can’t, but @alexandrecuer might be able to help.

What does the emonhub log say? This will tell you if the Jeelink is receiving data.

Are the MQTT settings in the emonhub.conf (not YAML I suspect) correct? Is emonhub and emoncms looking at the same Broker?

[edit]
BTW I know nothing of Docker, but I think this effectively starts 2 servers on different IPs, so the localhost Broker address in the emonhub looks iffy - but I could be wrong.

What IP Address do you connect to the emoncms instance on?

Hello,

@jfc dont use 9883 for the mqtt_port in the emonhub.conf (not emonhub.yaml, @borpin is right) as the emonhub container is in service mode with the emoncms container. You have to use 1883. service mode means both containers shares the same network namespace. 127.0.0.1 is good

not 100% sure but in the emonhub.yaml, either you use the device_cgroup_rules and you share the /dev volume, either you use devices.

Anyway, using the device_cgroup_rules requires to check the major number of your device, and 204 is generally for ttyAMA0, while 188 is for ttyUSB0….you can check that in cli :

ls -al /dev/ttyAMA*
crw-rw-rw- 1 root dialout 204, 64 Oct  7 15:30 /dev/ttyAMA0
ls -al /dev/ttyUSB*
crw-rw-rw- 1 root dialout 188, 0 Oct  7 15:57 /dev/ttyUSB0

cf containers/access_to_serial_devices at main · Open-Building-Management/containers · GitHub

tell me if changing the port to 1883 fixes things

and an extract of the emonhub log should help to understand what is wrong…

I’ve removed devices from compose_emonhub.conf

I’ve updated device_cgroup_rules to 188 post running that command:

    device_cgroup_rules:
      - 'c 188:* rmw'

I’ve updated the mqtt port to 1883

And I’ve allowed sufficient time for emonhub to receive something from the emonTH, here’s the emonhub log.

2026-01-25 14:18:14,614 INFO     MainThread EmonHub v2.7.2
2026-01-25 14:18:14,615 INFO     MainThread Opening hub...
2026-01-25 14:18:14,615 INFO     MainThread Running as user: root
2026-01-25 14:18:14,615 INFO     MainThread Logging level set to DEBUG
2026-01-25 14:18:14,615 INFO     MainThread Creating EmonHubOEMInterfacer 'jeelink'
2026-01-25 14:18:14,616 DEBUG    MainThread Opening serial port: /dev/ttyUSB0 @ 38400 bits/s
2026-01-25 14:18:14,617 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-01-25 14:18:14,617 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-01-25 14:18:14,617 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-01-25 14:18:14,617 INFO     MainThread Setting MQTT node_format_enable: 1
2026-01-25 14:18:14,618 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-01-25 14:18:14,618 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-01-25 14:18:14,618 INFO     MainThread Setting MQTT node_JSON_enable: 0
2026-01-25 14:18:14,618 INFO     MainThread Creating EmonHubEmoncmsHTTPInterfacer 'emoncmsorg'
2026-01-25 14:18:14,619 DEBUG    MainThread Setting emoncmsorg interval: 30
2026-01-25 14:18:14,619 DEBUG    MainThread Setting emoncmsorg pubchannels: ['ToRFM12']
2026-01-25 14:18:14,619 DEBUG    MainThread Setting emoncmsorg subchannels: ['ToEmonCMS']
2026-01-25 14:18:14,619 INFO     MainThread Setting emoncmsorg apikey: set
2026-01-25 14:18:14,619 INFO     MainThread Setting emoncmsorg url: http://127.0.0.1:8081
2026-01-25 14:18:14,620 INFO     MainThread Setting emoncmsorg senddata: 1
2026-01-25 14:18:14,620 INFO     MainThread Setting emoncmsorg sendstatus: 1
2026-01-25 14:18:14,620 INFO     MainThread Setting emoncmsorg sendnames: 0
2026-01-25 14:18:14,620 INFO     MainThread Setting emoncmsorg compress: 0
2026-01-25 14:18:14,621 DEBUG    MainThread Automatic configuration of nodes disabled

what is the output of that command ? be shure 188 is the correct number

what is below is for emoncms.org in the emonhub.conf, so you can remove, except if you use emoncms.org and in that case the url cannot be url = http://localhost:8081

[[emoncmsorg]]
   Type = EmonHubEmoncmsHTTPInterfacer
   [[[init_settings]]]
   [[[runtimesettings]]]
      pubchannels = ToRFM12,
      subchannels = ToEmonCMS,
      url = http://localhost:8081
      apikey = 79a6adf358a7528f33615bfe95e2575e
      senddata = 1                    # Enable sending data to Emoncms.org
      sendstatus = 1                  # Enable sending WAN IP to Emoncms.org MyIP > https://emoncms.org/myip/list
      interval = 30                   # Bulk send interval to Emoncms.org in seconds

It is indeed 188

ls -al /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Jan 25 13:13 /dev/ttyUSB0

Removed [[emoncmsorg]]

And waited a few minutes for an input to automatically appear to no success.

Logs are now

2026-01-25 14:51:49,056 INFO     MainThread EmonHub v2.7.2
2026-01-25 14:51:49,056 INFO     MainThread Opening hub...
2026-01-25 14:51:49,056 INFO     MainThread Running as user: root
2026-01-25 14:51:49,057 INFO     MainThread Logging level set to DEBUG
2026-01-25 14:51:49,057 INFO     MainThread Creating EmonHubOEMInterfacer 'jeelink'
2026-01-25 14:51:49,058 DEBUG    MainThread Opening serial port: /dev/ttyUSB0 @ 38400 bits/s
2026-01-25 14:51:49,059 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-01-25 14:51:49,059 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-01-25 14:51:49,059 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-01-25 14:51:49,059 INFO     MainThread Setting MQTT node_format_enable: 1
2026-01-25 14:51:49,059 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-01-25 14:51:49,060 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-01-25 14:51:49,060 INFO     MainThread Setting MQTT node_JSON_enable: 0
2026-01-25 14:51:49,060 DEBUG    MainThread Automatic configuration of nodes disabled

mine is like this when I restart :

2026-01-25 14:58:00,924 DEBUG    MainThread Signal 15 received.
2026-01-25 14:58:00,971 INFO     MainThread Exiting hub...
2026-01-25 14:58:01,086 INFO     MainThread Exit completed
2026-01-25 14:58:09,507 INFO     MainThread EmonHub v2.7.2
2026-01-25 14:58:09,508 INFO     MainThread Opening hub...
2026-01-25 14:58:09,509 INFO     MainThread Running as user: root
2026-01-25 14:58:09,510 INFO     MainThread Logging level set to DEBUG
2026-01-25 14:58:09,510 INFO     MainThread Creating EmonHubJeeInterfacer 'RFM2Pi'
2026-01-25 14:58:09,511 DEBUG    MainThread Opening serial port: /dev/ttyAMA0 @ 38400 bits/s
2026-01-25 14:58:11,515 INFO     MainThread RFM2Pi device firmware version: [RF12demo.13]
2026-01-25 14:58:11,516 INFO     MainThread RFM2Pi device current settings:  E i5 g210 @ 433 MHz q1
2026-01-25 14:58:11,517 INFO     MainThread Setting RFM2Pi calibration: 230V (1p)
2026-01-25 14:58:12,518 DEBUG    MainThread Setting RFM2Pi pubchannels: ['ToEmonCMS']
2026-01-25 14:58:12,519 DEBUG    MainThread Setting RFM2Pi subchannels: ['ToRFM12']
2026-01-25 14:58:12,521 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-01-25 14:58:12,533 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-01-25 14:58:12,534 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-01-25 14:58:12,534 INFO     MainThread Setting MQTT node_format_enable: 1
2026-01-25 14:58:12,535 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-01-25 14:58:12,535 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-01-25 14:58:12,536 INFO     MainThread Setting MQTT node_JSON_enable: 0
2026-01-25 14:58:12,538 DEBUG    MainThread Automatic configuration of nodes disabled
2026-01-25 14:58:12,539 DEBUG    RFM2Pi     acknowledged command: > 1p
2026-01-25 14:58:12,844 DEBUG    RFM2Pi     acknowledged command: <nn> i     - set node ID (standard node ids are 1..30)
2026-01-25 14:58:12,946 DEBUG    RFM2Pi     acknowledged command: <n> b      - set MHz band (4 = 433, 8 = 868, 9 = 915)
2026-01-25 14:58:13,050 DEBUG    RFM2Pi     acknowledged command: <nnnn> o   - change frequency offset within the band (default 1600)
2026-01-25 14:58:13,256 DEBUG    RFM2Pi     acknowledged command: <nnn> g    - set network group (RFM12 only allows 212, 0 = any)
2026-01-25 14:58:13,361 DEBUG    RFM2Pi     acknowledged command: <n> c      - set collect mode (advanced, normally 0)
2026-01-25 14:58:13,570 DEBUG    RFM2Pi     acknowledged command: ...,<nn> a - send data packet to node <nn>, request ack
2026-01-25 14:58:13,675 DEBUG    RFM2Pi     acknowledged command: ...,<nn> s - send data packet to node <nn>, no ack
2026-01-25 14:58:13,781 DEBUG    RFM2Pi     acknowledged command: <n> q      - set quiet mode (1 = don't report bad packets)
2026-01-25 14:58:13,887 DEBUG    RFM2Pi     acknowledged command: <n> x      - set reporting format (0: decimal, 1: hex, 2: hex+ascii)
2026-01-25 14:58:14,201 DEBUG    RFM2Pi     acknowledged command: <hchi>,<hclo>,<addr>,<cmd> f     - FS20 command (868 MHz)
2026-01-25 14:58:14,306 DEBUG    RFM2Pi     acknowledged command: <addr>,<dev>,<on> k              - KAKU command (433 MHz)
2026-01-25 14:58:14,511 DEBUG    RFM2Pi     device settings updated: E i5 g210 @ 433 MHz q1

but I have a ttyAMA0 and not a ttyUSB0

and in my emonhub.conf,

[[RFM2Pi]]
   Type = EmonHubJeeInterfacer
   [[[init_settings]]]
      com_port = /dev/ttyAMA0
      com_baud = 38400                      # 9600 for old RFM12Pi modules
   [[[runtimesettings]]]
      pubchannels = ToEmonCMS,
      subchannels = ToRFM12,

      group = 210
      frequency = 433
      baseid = 5                              # emonPi / emonBase nodeID
      quiet = true                            # Report incomplete RF packets (no implemented on emonPi)
      calibration = 230V                      # (UK/EU: 230V, US: 110V)
      # interval =  0                         # Interval to transmit time to emonGLCD (seconds)

[[MQTT]]

   Type = EmonHubMqttInterfacer
   [[[init_settings]]]
      mqtt_host = 127.0.0.1
      mqtt_port = 1883
      mqtt_user = 'emonpi'
      mqtt_passwd = 'emonpimqtt2016'

   [[[runtimesettings]]]
      pubchannels = ToRFM12,
      subchannels = ToEmonCMS,

      # emonhub/rx/10/values format
      # Use with emoncms Nodes module
      node_format_enable = 1
      node_format_basetopic = emonhub/

      # emon/emontx/power1 format - use with Emoncms MQTT input
      # http://github.com/emoncms/emoncms/blob/master/docs/RaspberryPi/MQTT.md
      nodevar_format_enable = 1
      nodevar_format_basetopic = emon/

      # Single JSON payload published  - use with Emoncms MQTT
      node_JSON_enable = 0
      node_JSON_basetopic = emon/

on the “docker” side, everything seems to be OK, so the problem is somewhere else…

which type of USB key do you use ?

there is 2 types of firmware : JeeLink with either the JeeLib Classic (compatibility) firmware or the new Low Power Labs firmware

@TrystanLea with new Low Power Labs firmware, baud rate is 115200 ?

cd emonHub Default Configuration — OpenEnergyMonitor 0.0.1 documentation

I use - The JeeLabs Shop - JeeLink (v3c), the 433 version and purchased it in 2021. This was used in a previously working instance but that instance is long gone so can’t reference the previous config.

I don’t know anything about docker etc but from the jeelilink page

[[jeelink]]
Type = EmonHubOEMInterfacer
    [[[init_settings]]]
        com_port = /dev/ttyUSB0
        com_baud = 38400
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        subchannels = ToRFM12,
        nodename = RF 

Not sure if this is for JeeLib Classic (compatibility) firmware or the new Low Power Labs firmware or both!

And the jeeLink RF format needs to match that used by the emonThs

I had bought 2x emonTH_v2’s from OEM in 2021 if that helps any. As said this was previously working in an instance that unfortunately no longer exists.

this is indeed really a key point. otherwise nothing will come on the port

What LEDs should be visible on the USB, are there any constantly powered ones? I get a bit of tx and rx when the emonhub container starts but nothing fro the blue one.

blue led should be visible i think

Nope, not getting that at all. It might flash, very quickly, when the others do but it’s definitely not steady state at all. Let me try it in another device.

1 Like

If you got your jeelink from the JeeLabs shop rather than the OEM shop, I think it uses the JeeLib Classic radio format, and the baud rate is 57600.
I have used a JeeLabs shop one successfully in the past and my emonHob interfacer was

[[JeeLinkUSB]]
    Type = EmonHubJeeInterfacer
    [[[init_settings]]]
        com_port = /dev/ttyUSB0
        com_baud = 57600                        # 9600 for old RFM12Pi
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        subchannels = ToRFM12,

        group = 210
        frequency = 433
        baseid = 5                              # emonPi / emonBase nodeID
        quiet = true                            # Report incomplete RF packets (not implemented on emonPi)
        calibration = 230V                      # (UK/EU: 230V, US: 110V)
        # interval =  0                         # Interval to transmit time to emonGLCD (seconds)

I think the last lines (group, etc) set the Jeelink to work with the settings OEM uses

1 Like

Huzaaah! Thank you all.

57600 did the trick.

2026-01-25 15:58:44,465 INFO     MainThread EmonHub v2.7.2
2026-01-25 15:58:44,465 INFO     MainThread Opening hub...
2026-01-25 15:58:44,465 INFO     MainThread Running as user: root
2026-01-25 15:58:44,465 INFO     MainThread Logging level set to DEBUG
2026-01-25 15:58:44,466 INFO     MainThread Creating EmonHubOEMInterfacer 'jeelink'
2026-01-25 15:58:44,467 DEBUG    MainThread Opening serial port: /dev/ttyUSB0 @ 57600 bits/s
2026-01-25 15:58:44,468 INFO     MainThread Creating EmonHubMqttInterfacer 'MQTT'
2026-01-25 15:58:44,468 DEBUG    MainThread Setting MQTT pubchannels: ['ToRFM12']
2026-01-25 15:58:44,469 DEBUG    MainThread Setting MQTT subchannels: ['ToEmonCMS']
2026-01-25 15:58:44,469 INFO     MainThread Setting MQTT node_format_enable: 1
2026-01-25 15:58:44,469 INFO     MainThread Setting MQTT nodevar_format_enable: 1
2026-01-25 15:58:44,469 INFO     MainThread Setting MQTT nodevar_format_basetopic: emon/
2026-01-25 15:58:44,469 INFO     MainThread Setting MQTT node_JSON_enable: 0
2026-01-25 15:58:44,470 DEBUG    MainThread Automatic configuration of nodes disabled
2026-01-25 15:58:46,274 DEBUG    jeelink    [RF12demo.12] E i5 g210 @ 433 MHz q1
2026-01-25 15:58:46,476 DEBUG    jeelink    Available commands:
2026-01-25 15:58:46,577 DEBUG    jeelink    <nn> i     - set node ID (standard node ids are 1..30)
2026-01-25 15:58:46,679 DEBUG    jeelink    <n> b      - set MHz band (4 = 433, 8 = 868, 9 = 915)
2026-01-25 15:58:46,781 DEBUG    jeelink    <nnnn> o   - change frequency offset within the band (default 1600)
2026-01-25 15:58:46,882 DEBUG    jeelink    96..3903 is the range supported by the RFM12B
2026-01-25 15:58:46,984 DEBUG    jeelink    <nnn> g    - set network group (RFM12 only allows 212, 0 = any)
2026-01-25 15:58:47,086 DEBUG    jeelink    <n> c      - set collect mode (advanced, normally 0)
2026-01-25 15:58:47,188 DEBUG    jeelink    t          - broadcast max-size test packet, request ack
2026-01-25 15:58:47,289 DEBUG    jeelink    ...,<nn> a - send data packet to node <nn>, request ack
2026-01-25 15:58:47,390 DEBUG    jeelink    ...,<nn> s - send data packet to node <nn>, no ack
2026-01-25 15:58:47,492 DEBUG    jeelink    <n> q      - set quiet mode (1 = don't report bad packets)
2026-01-25 15:58:47,594 DEBUG    jeelink    <n> x      - set reporting format (0: decimal, 1: hex, 2: hex+ascii)
2026-01-25 15:58:47,695 DEBUG    jeelink    123 z      - total power down, needs a reset to start up again
2026-01-25 15:58:47,796 DEBUG    jeelink    Remote control commands:
2026-01-25 15:58:47,898 DEBUG    jeelink    <hchi>,<hclo>,<addr>,<cmd> f     - FS20 command (868 MHz)
2026-01-25 15:58:47,999 DEBUG    jeelink    <addr>,<dev>,<on> k              - KAKU command (433 MHz)
2026-01-25 15:58:48,099 DEBUG    jeelink    Current configuration:
2026-01-25 15:58:48,200 DEBUG    jeelink    E i5 g210 @ 433 MHz q1

And here are the currently configured settings:

[[jeelink]]
    Type = EmonHubOEMInterfacer
    [[[init_settings]]]
        com_port = /dev/ttyUSB0
        com_baud = 57600
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        subchannels = ToRFM12,
        nodename = RF
2 Likes

So can you see it receiving data from the emonThs in the emonHub log?
You can see in the log above that the JeeLink is showing the available commands, so the baud rate is right and emoHub is talking to it. I think you may need
to add

 group = 210
        frequency = 433
        baseid = 5                              # emonPi / emonBase nodeID
        quiet = true                            # Report incomplete RF packets (not implemented on emonPi)
        calibration = 230V                      # (UK/EU: 230V, US: 110V)
        # interval =  0         

to set it up properly to talk to the emonThs?

Once you are receiving data from your emonThs, I think you may need to add node configuration entries in emonHub for your emonThs, for example for an emonTh on node 19

[[19]]
   nodename = emonth1
   [[[rx]]]
      names = temperature, external temperature, humidity, battery
      datacode = h
      scales = 0.1,0.1,0.1,0.1
      units = C,C,%,V

if you had a second emonTh on say node 20, the nodename would be emonth2 for example.