Emon Tx V4 and 433MHz Radio Formats

Yes, I have been able to transmit as well. I used Node-RED to write commands to the serial port (i.e. /dev/ttyUSB0). I used commands recognized by the JeeLib Classic emonBase firmware (i.e. “1,1,18,16s”).

Here is the flow I used.

[{"id":"50369e7e.134d48","type":"tab","label":"RFM69Pi","disabled":false,"info":""},{"id":"6ebfa729.fcc488","type":"change","z":"50369e7e.134d48","name":"Set to Node 14","rules":[{"t":"set","p":"payload","pt":"msg","to":"14i","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":300,"wires":[["27ce8704.60cb9"]]},{"id":"4359f4b5.c93904","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":220,"wires":[["a09016aa.10e5d"]]},{"id":"c4364baf.85c9a8","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":890,"y":260,"wires":[]},{"id":"27ce8704.60cb9","type":"serial request","z":"50369e7e.134d48","name":"","serial":"e62ea184.4fae68","x":680,"y":260,"wires":[["c4364baf.85c9a8"]]},{"id":"3b31404f.b1383","type":"change","z":"50369e7e.134d48","name":"Send Test","rules":[{"t":"set","p":"payload","pt":"msg","to":"t","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":260,"wires":[["27ce8704.60cb9"]]},{"id":"a09016aa.10e5d","type":"change","z":"50369e7e.134d48","name":"Send 10 to Node 16","rules":[{"t":"set","p":"payload","pt":"msg","to":"1,1,18,16s","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":420,"y":220,"wires":[["27ce8704.60cb9"]]},{"id":"41b71f4e.a5d8b8","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":300,"wires":[["6ebfa729.fcc488"]]},{"id":"5f4729d8.c27b8","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":260,"wires":[["3b31404f.b1383"]]},{"id":"c357fbf7.11986","type":"change","z":"50369e7e.134d48","name":"Set to Node 15","rules":[{"t":"set","p":"payload","pt":"msg","to":"15i","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":340,"wires":[["27ce8704.60cb9"]]},{"id":"f7febe5f.2b97","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":340,"wires":[["c357fbf7.11986"]]},{"id":"38b808fd.5ad8d","type":"change","z":"50369e7e.134d48","name":"Send Group to 212","rules":[{"t":"set","p":"payload","pt":"msg","to":"212g","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":410,"y":180,"wires":[["27ce8704.60cb9"]]},{"id":"570230d2.c23818","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":180,"wires":[["38b808fd.5ad8d"]]},{"id":"9ae421d2.eaf73","type":"change","z":"50369e7e.134d48","name":"Change to Group 210 (OEM)","rules":[{"t":"set","p":"payload","pt":"msg","to":"210g","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":440,"y":140,"wires":[["27ce8704.60cb9"]]},{"id":"7a3f2102.553c78","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":140,"wires":[["9ae421d2.eaf73"]]},{"id":"ed57d65a.94645","type":"change","z":"50369e7e.134d48","name":"Get version","rules":[{"t":"set","p":"payload","pt":"msg","to":"v","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":380,"wires":[["27ce8704.60cb9"]]},{"id":"64e2185c.62c77","type":"inject","z":"50369e7e.134d48","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":380,"wires":[["ed57d65a.94645"]]},{"id":"f822bf42.42901","type":"comment","z":"50369e7e.134d48","name":"Testing and Learning About the RFM69Pi Connected to this emonBase","info":"","x":350,"y":60,"wires":[]},{"id":"cb6e5e28.f92878","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1170,"y":400,"wires":[]},{"id":"56fc52b6.622a04","type":"function","z":"50369e7e.134d48","name":"Convert to Binary, Highbit, Lowbit","func":"var number = msg.payload;\n\nmsg.payload = (number >>> 0).toString(2).padStart(16, '0');\nmsg.lowbit = msg.payload.substring(1, 8).padStart(8, '0');\nmsg.highbit = msg.payload.substring(9,16).padStart(8, '0');\nreturn msg;","outputs":1,"noerr":0,"x":740,"y":500,"wires":[["cb6e5e28.f92878","e3f8c806.066e3","4ef8b828.a2168","6d30b09c.ad087","29c53869.ab34e","28470d81.da2a2a"]]},{"id":"df123418.830c28","type":"change","z":"50369e7e.134d48","name":"Enter A Number in This Node","rules":[{"t":"set","p":"payload","pt":"msg","to":"374","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":400,"y":500,"wires":[["56fc52b6.622a04"]]},{"id":"e3f8c806.066e3","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"lowbit","targetType":"msg","x":1170,"y":480,"wires":[]},{"id":"4ef8b828.a2168","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"highbit","targetType":"msg","x":1170,"y":440,"wires":[]},{"id":"6d30b09c.ad087","type":"function","z":"50369e7e.134d48","name":"Convert High Bit, Low Bit to Original Number","func":"var binary = msg.lowbit + msg.highbit;\nmsg.payload = parseInt(binary, 2);\n\nreturn msg;","outputs":1,"noerr":0,"x":1270,"y":540,"wires":[["4e118804.c8d8a8"]]},{"id":"29c53869.ab34e","type":"function","z":"50369e7e.134d48","name":"Convert High Bit to Number","func":"var binary = msg.highbit;\nmsg.payload = parseInt(binary, 2);\n\nreturn msg;","outputs":1,"noerr":0,"x":1220,"y":580,"wires":[["9d174a53.373a2"]]},{"id":"28470d81.da2a2a","type":"function","z":"50369e7e.134d48","name":"Convert Low Bit to Number","func":"var binary = msg.lowbit;\nmsg.payload = parseInt(binary, 2);\n\nreturn msg;","outputs":1,"noerr":0,"x":1220,"y":620,"wires":[["b30a7d1b.55ff1"]]},{"id":"7f036d79.a28afc","type":"inject","z":"50369e7e.134d48","name":"","repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":180,"y":500,"wires":[["df123418.830c28"]]},{"id":"4e118804.c8d8a8","type":"debug","z":"50369e7e.134d48","name":"Return the Number","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":1550,"y":540,"wires":[]},{"id":"9d174a53.373a2","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1450,"y":580,"wires":[]},{"id":"b30a7d1b.55ff1","type":"debug","z":"50369e7e.134d48","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":1450,"y":620,"wires":[]},{"id":"76fe44491baf34b0","type":"comment","z":"50369e7e.134d48","name":"Testing and Learning the Binary Representation of Data","info":"","x":300,"y":440,"wires":[]},{"id":"e62ea184.4fae68","type":"serial-port","serialport":"/dev/ttyUSB0","serialbaud":"38400","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]

Yes. I have tested using more than two transcievers and it works. Those that do so might want to look at this post by @Bill.Thomson, which describes how to keep the USB devices at predictable serial device names. How to match a ttyUSBX device to a USB Serial device

I would also recommend being more explicit about the node IDs, especially if you plan to use outbound messages. Here is what that looks like in my setup with an RFM69Pi and two Moteino USBs.

[interfacers]
### This interfacer manages the RFM12Pi/RFM69Pi/emonPi module
[[RFM2Pi]]
    Type = EmonHubJeeInterfacer
    [[[init_settings]]]
        com_port = /dev/ttyAMA0
        com_baud = 38400                        # 9600 for old RFM12Pi
    [[[runtimesettings]]]
        pubchannels = ToEmonCMS,
        subchannels = ToRFM12,

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

### This interfacer manages a Moteino USB
[[MoteinoUSB0]]
     Type = EmonHubJeeInterfacer
      [[[init_settings]]]
           com_port = /dev/ttyUSB0
           com_baud = 38400
      [[[runtimesettings]]]
           pubchannels = ToEmonCMS,
           subchannels = ToRFM12,
        group = 210
        frequency = 433
        baseid = 14                              # emonPi / emonBase nodeID
        quiet = true                            # Report incomplete RF packets (no implemented on emonPi)
        calibration = 230V                      # (UK/EU: 230V, US: 110V)
        #interval =  10                         # Interval to transmit time to emonGLCD (seconds)

### This interfacer manages a Moteino USB
[[MoteinoUSB1]]
     Type = EmonHubJeeInterfacer
      [[[init_settings]]]
           com_port = /dev/ttyUSB1 
           com_baud = 38400
      [[[runtimesettings]]]
           pubchannels = ToEmonCMS,
           subchannels = ToRFM12,

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

“In Parallel” is better than “Simultaneously”. I agree. Can the title of my original post be updated?

1 Like