OpenHAB 2.5 MySensors Serial Gateway - How to install
-
[update 2018-03-03 for version 2.2]
[update 2019-01-05 for version 2.4]
[updates 2019-04 add esh-io-transport-mqtt (needed even for serial gateway) and stop debug mysensors]
[updates 2020-02-25 update for zulu openjdk implementation and other minor adjustments]Preparing your raspberry with clean install:
Download RASPBIAN STRETCH LITE from https://www.raspberrypi.org/downloads/raspbian/
Flash to SD-Card with etcher (https://etcher.io/) or any other flash tool you like
create empty "ssh" file in root on SD-Card
Insert SD-Card into raspberry PI, connect with UTP cable to your router and power on.
Go get some coffee
Get IP address by pinging raspberrypi.local from commandprompt on your pc
Start SSH session with putty to the raspberry pi
Login as "pi" with password "raspberry"Initial configuration:
sudo raspi-config
Change your password
Network options\Hostname Change hostname to "openhabpi" or what you want
[optional: add wifi settings]
Interfacing Options\SPI enable
Advanced options\Expand the file system
Advanced options\Memory split change the memory split for the GPU from "64" to “16”
Finish + reboot
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install screen mc vim git htopJava installation: (updated 2020-02-25)
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | sudo tee -a /etc/apt/sources.list.d/webupd8team-java.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo apt-get install oracle-java8-set-default
wget -q -O - http://repos.azulsystems.com/RPM-GPG-KEY-azulsystems | sudo tee /etc/apt/trusted.gpg.d/zulu.asc
sudo echo 'deb http://repos.azulsystems.com/debian stable main' | sudo tee /etc/apt/sources.list.d/zulu.list
sudo apt-get update
sudo apt-get install zulu-embedded-8MySensors:
git clone https://github.com/mysensors/MySensors.git --branch master
cd MySensors[edit update 2019-01-05]
sudo nano /home/pi/MySensors/examples_linux/mysgw.cppUncomment the where needed to make it look like this:
// Config file #define MY_LINUX_CONFIG_FILE "/etc/mysensors.conf" // How many clients should be able to connect to this gateway (default 1) #define MY_GATEWAY_MAX_CLIENTS 10 // Serial config // Enable this if you are using an Arduino connected to the USB #define MY_LINUX_SERIAL_PORT "/dev/ttyUSB0" // Enable this if you need to connect to a controller running on the same device // You also need to define MY_LINUX_SERIAL_PORT above with the symlink name for the PTY device #define MY_LINUX_SERIAL_IS_PTY // Grant access to the specified system group for the serial device #define MY_LINUX_SERIAL_GROUPNAME "tty"
Save & close mysgw.cpp
note: I have chosen channel 69 for the rf24 network. You can choose your own, but remember to use the same channel in your arduino sketches as you do here.
./configure --my-gateway=serial --my-serial-is-pty --my-rf24-channel=69 --my-transport=rf24 --my-serial-groupname=tty
make
sudo ./bin/mysgw --config-file /etc/mysensors.dat --daemon
sudo make install
sudo systemctl daemon-reload
sudo systemctl enable mysgw.service
sudo systemctl start mysgw.serviceOpenHAB2:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add -
echo 'deb http://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
sudo apt-get update
sudo apt-get install openhab2
sudo apt-get install openhab2-addons
sudo systemctl start openhab2.service
sudo systemctl status openhab2.service
sudo systemctl daemon-reload
sudo systemctl enable openhab2.serviceTime for coffee again.......
open web page select expert....
sudo usermod -a -G dialout openhab
sudo usermod -a -G tty openhabcd /usr/share/openhab2/addons/
sudo wget http://www.oberfoell.com/openhab2/org.openhab.binding.mysensors-2.5.0-SNAPSHOT.jar
sudo chown openhab:openhab org.openhab.binding.mysensors-2.5.0-SNAPSHOT.jar
ssh -p 8101 openhab@localhost (used to fail the first time, but works now at the first attempt)
pw:habopen
feature:install openhab-transport-serial
feature:install openhab-core-io-transport-mqtt
log:set DEBUG org.openhab.binding.mysensors
log:tailsudo reboot
Finally:
web-> paperui/things add MySensors Serial Gateway
settings:
Serial Port: /dev/ttyUSB0
Send Delay: 200
Baudrate: 115200
Skip startup connection check: trueAll done. Good luck!
When all is working well, you can stop debugging mysensors this will help to reduce the log files.
//start karaf
ssh -p 8101 openhab@localhost
//enter password
habopen
// stop debugging mysensors and switch to only registring events
log:set INFO org.openhab.binding.mysensors
// close karaf
<ctrl>DFor further reducing logs you can add them to logrotate
-
Hey!
The MysGW Service is running with root permissions and therefore creates the device "/dev/ttyMySensorsGateway" with owner and group root.
Please test: "sudo usermod -a -G root openhab"
Do a restart to be sure the settings are used.
That shouldn't be the final solution though.
-
Really grateful for your reply. Tried it and it didn't fix my problem unfortenately
09:43:21.396 [DEBUG] [col.serial.MySensorsSerialConnection] - Connecting to /dev/pts/1 [baudRate:115200] 09:43:21.398 [DEBUG] [col.serial.MySensorsSerialConnection] - Final port list: /dev/pts/1 09:43:21.402 [ERROR] [col.serial.MySensorsSerialConnection] - Can't connect to serial port. Wrong port? 09:43:21.405 [ERROR] [col.serial.MySensorsSerialConnection] - Failed connecting to bridge...next retry in 10 seconds (Retry No.:17) 09:43:21.407 [DEBUG] [col.serial.MySensorsSerialConnection] - Shutting down serial connection!
09:45:14.726 [DEBUG] [col.serial.MySensorsSerialConnection] - Connecting to /dev/ttyMySensorsGateway [baudRate:115200] 09:45:14.728 [DEBUG] [col.serial.MySensorsSerialConnection] - Final port list: /dev/ttyMySensorsGateway 09:45:14.732 [ERROR] [col.serial.MySensorsSerialConnection] - Can't connect to serial port. Wrong port? 09:45:14.735 [ERROR] [col.serial.MySensorsSerialConnection] - Failed connecting to bridge...next retry in 10 seconds (Retry No.:1) 09:45:14.737 [DEBUG] [col.serial.MySensorsSerialConnection] - Shutting down serial connection!
lrwxrwxrwx 1 root root 10 apr 23 09:35 ttyMySensorsGateway -> /dev/pts/1 .... pi@Controller:/dev/pts $ ls -l totaal 0 crw--w---- 1 pi tty 136, 0 apr 23 2017 0 crw--w---- 1 root tty 136, 1 apr 23 09:35 1 crw--w---- 1 pi tty 136, 2 apr 23 09:41 2 c--------- 1 root root 5, 2 jan 1 1970 ptmx
In my /etc/group I have this (filtered out some stuff this noob thinks is obsolete )
root:x:0:openhab daemon:x:1: bin:x:2: sys:x:3: adm:x:4:pi tty:x:5: dialout:x:20:pi,openhab sudo:x:27:pi www-data:x:33: pi:x:1000: spi:x:999:pi i2c:x:998:pi gpio:x:997:pi openhab:x:119:```
-
solved it
Inside "/home/pi/MySensors/example_linux/mysgw.cpp" or where you downloaded the "git clone https://github.com/mysensors/MySensors.git --branch master" there is this option:
// Grant access to the specified system group for the serial device
//#define MY_LINUX_SERIAL_GROUPNAME "tty"uncomment to
// Grant access to the specified system group for the serial device
#define MY_LINUX_SERIAL_GROUPNAME "tty"save file
stop mysgw with "sudo systemctl stop mysgw.service"
remove mysgw from auto start with "sudo systemctl disable mysgw.service"
uninstall with "sudo make uninstall"
installed againI added openhab to the tty group using "sudo usermod -a -G tty openhab"
full reboot
and it works!
-
Made a reïnstall again and found that something was incomplete and that it didn't work anymore with the stable branche.
Missing in "initial config" is enabling SPI through raspi-config at the start
At installing MySensors replace:
git clone https://github.com/mysensors/MySensors.git --branch master
with:
git clone https://github.com/mysensors/MySensors.git --branch developmentecho 'deb http://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
Now needs to be:
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.listsudo wget http://www.oberfoell.com/openhab2/org.openhab.binding.mysensors-2.2.0-SNAPSHOT.jar
sudo chown openhab:openhab org.openhab.binding.mysensors-2.2.0-SNAPSHOT.jar
Somehow this next one always times-out the first time. 2nd attempt does give me a connection after a while
ssh -p 8101 openhab@localhost
-
I still have problem with with org.openhab.binding.mysensors-2.2.0-SNAPSHOT.jar and org.openhab.binding.mysensors-2.3.0-SNAPSHOT.jar
I get always de Mysensors Serial Gateway offline with this error2018-03-01 21:36:47.880 [DEBUG] [col.serial.MySensorsSerialConnection] - Connecting to /dev/ttyMySensorsGateway [baudRate:115200] 2018-03-01 21:36:47.890 [ERROR] [col.serial.MySensorsSerialConnection] - No such port: /dev/ttyMySensorsGateway gnu.io.NoSuchPortException: null at gnu.io.CommPortIdentifier.getPortIdentifier(CommPortIdentifier.java:273) [25:com.neuronrobotics.nrjavaserial:3.12.0.OH] at org.openhab.binding.mysensors.internal.protocol.serial.MySensorsSerialConnection.establishConnection(MySensorsSerialConnection.java:51) [195:org.openhab.binding.mysensors:2.3.0.201802141500] at org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection.connect(MySensorsAbstractConnection.java:148) [195:org.openhab.binding.mysensors:2.3.0.201802141500] at org.openhab.binding.mysensors.internal.protocol.MySensorsAbstractConnection.run(MySensorsAbstractConnection.java:127) [195:org.openhab.binding.mysensors:2.3.0.201802141500] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:?] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:?] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:?] at java.lang.Thread.run(Thread.java:745) [?:?]
I back to org.openhab.binding.mysensors-2.1.0-SNAPSHOT.jar and now it's working again. Any ideas?
Thanks
-
@jic Nope sry, BUT.. I am going to do a fresh install again today. Will check if I can get it to work and make updates to this howto where needed.
-
2.3 snapshot doesn't work. 2.2 does
Updated opening post for step by step instruction on installing openhab2.2 with mysensors 2.2 serial gateway binding. If you have any questions, just post them here.
-
Seem it's working know.
Thanks
-
I am trying to follow these instructions to set up OpenHab with the MySensors Serial Gateway, but ran into a problem when installing the Java (Third command.). Here is a copy of the command and error:
pi@openhabpi:~ $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
Executing: /tmp/apt-key-gpghome.3nAEDiCNLy/gpg.1.sh --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
gpg: failed to start the dirmngr '/usr/bin/dirmngr': No such file or directory
gpg: connecting dirmngr at '/tmp/apt-key-gpghome.3nAEDiCNLy/S.dirmngr' failed: No such file or directory
gpg: keyserver receive failed: No dirmngrPlease let me know if I missed something.
BTW, this is using the raspbian stretch lite version, dated 2018-03-13.
Thank you!
-
@FlipFlap3
Firstly well done for the brilliant instructions . I too have been attempting to use Openhab with my sensors over the last year and to be honest although I've had relative success, because of the limited amount of, up to date and accurate tutorials its been a steep slope to climb. Currently I have Openhabian installed on a Raspberry pi with a Gateway connected to the I/O pins of the Pi and a couple of temp sensors connected ( all be it with difficulty ). It's setup as an Ethernet Gateway but I did try once to setup it up as a serial gateway, unsuccessfully I might add. Out of interest if I did re- install using your setup instructions, Is a serial Gateway better or easier in any way ? it does seem like the most supported option of the 3 for most people on the forum .
-
@frozenyack Sorry, I can't remember seeing an error like that before.
-
@greymarvel said in OpenHAB 2.2 MySensors Serial Gateway - How to install:
@FlipFlap3
Firstly well done for the brilliant instructions . I too have been attempting to use Openhab with my sensors over the last year and to be honest although I've had relative success, because of the limited amount of, up to date and accurate tutorials its been a steep slope to climb. Currently I have Openhabian installed on a Raspberry pi with a Gateway connected to the I/O pins of the Pi and a couple of temp sensors connected ( all be it with difficulty ). It's setup as an Ethernet Gateway but I did try once to setup it up as a serial gateway, unsuccessfully I might add. Out of interest if I did re- install using your setup instructions, Is a serial Gateway better or easier in any way ? it does seem like the most supported option of the 3 for most people on the forum .Thanks
Sorry for late response (busy with anual reporting lately).
I have tried MTTQ first myself, but I didn't get things working smoothly. 2nd attempt was with serial gateway. Even though I had some problems at first, I did manage to get it working. I had a hard time finding a good tutorial though, so I wrote down the steps I took carefully. Reason for me to put it here was to have a personal backup for my notes and if it would be helpful for anyone else that would be an awesome bonus
I didn't try ethernet gateway yet cause I am happy with the current setup.
-
Hi,
The mysgw seems to be creating a link to the wrong TTY.
When I connect the arduino gateway, I get the /dev/ttyUSB1 device.Insert Code Herepi@nettemp:~/MySensors $ ls /dev/tty* /dev/tty /dev/tty15 /dev/tty22 /dev/tty3 /dev/tty37 /dev/tty44 /dev/tty51 /dev/tty59 /dev/tty9 /dev/tty0 /dev/tty16 /dev/tty23 /dev/tty30 /dev/tty38 /dev/tty45 /dev/tty52 /dev/tty6 /dev/ttyAMA0 /dev/tty1 /dev/tty17 /dev/tty24 /dev/tty31 /dev/tty39 /dev/tty46 /dev/tty53 /dev/tty60 /dev/ttyUSB0 /dev/tty10 /dev/tty18 /dev/tty25 /dev/tty32 /dev/tty4 /dev/tty47 /dev/tty54 /dev/tty61 /dev/ttyUSB1 /dev/tty11 /dev/tty19 /dev/tty26 /dev/tty33 /dev/tty40 /dev/tty48 /dev/tty55 /dev/tty62 /dev/ttyprintk /dev/tty12 /dev/tty2 /dev/tty27 /dev/tty34 /dev/tty41 /dev/tty49 /dev/tty56 /dev/tty63 /dev/tty13 /dev/tty20 /dev/tty28 /dev/tty35 /dev/tty42 /dev/tty5 /dev/tty57 /dev/tty7 /dev/tty14 /dev/tty21 /dev/tty29 /dev/tty36 /dev/tty43 /dev/tty50 /dev/tty58 /dev/tty8
Then I start the mysgw and a new tty is created: "/dev/ttyMySensorsGateway", which looks nice. However, the mysgw returns lots of errors:
mysgw: Starting gateway... mysgw: Protocol version - 2.2.0 mysgw: Serial port /dev/ttyMySensorsGateway (115200 baud) created mysgw: MCO:BGN:INIT GW,CP=RNNGL---,VER=2.2.0 mysgw: TSF:LRT:OK mysgw: TSM:INIT mysgw: TSF:WUR:MS=0 mysgw: !TSM:INIT:TSP FAIL mysgw: TSM:FAIL:CNT=1 mysgw: TSM:FAIL:DIS mysgw: TSF:TDI:TSL mysgw: TSM:INIT mysgw: !TSM:INIT:TSP FAIL mysgw: TSM:FAIL:CNT=2 mysgw: TSM:FAIL:DIS mysgw: TSF:TDI:TSL
Then I go check what is wrong an I see the pointer wasn't created towards "/dev/ttyUSB1", but "/dev/pts/1":
pi@nettemp:~/MySensors $ ls -larth /dev/ttyMySensorsGateway lrwxrwxrwx 1 root root 10 Apr 26 18:27 /dev/ttyMySensorsGateway -> /dev/pts/1
Taking a look into the /dev/ttyUSB1 directly I can see it is fine, the problem is the GW software on the Raspberry PI that is pointing towards the wrong tty:
pi@nettemp:~ $ stty -F /dev/ttyUSB1 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts pi@nettemp:~ $ cat /dev/ttyUSB1 0;255;3;0;9;0 MCO:BGN:INIT GW,CP=RNNGAS--,VER=2.2.0 0;255;3;0;9;0;255;3;0;9;0 MCO:BGN:INIT GW,CP=RNNGAS--,VER=2.2.0 0;255;3;0;9;26 SGN:PER:OK 0;255;3;0;9;64 SGN:INI:BND OK 0;255;3;0;9;67 TSM:INIT 0;255;3;0;9;69 TSF:WUR:MS=0 0;255;3;0;9;77 TSM:INIT:TSP OK 0;255;3;0;9;79 TSM:INIT:GW MODE 0;255;3;0;9;82 TSM:READY:ID=0,PAR=0,DIS=0 0;255;3;0;9;87 MCO:REG:NOT NEEDED 0;255;3;0;14;Gateway startup complete. 0;255;0;0;18;2.2.0 0;255;3;0;9;91 MCO:BGN:STP 0;255;3;0;9;98 MCO:BGN:INIT OK,TSP=1
Any idea of how to make this work?
Where can I see the alternatives for the "
./configure --my-gateway=serial --my-serial-is-pty --my-serial-pty=/dev/ttyMySensorsGateway --my-rf24-channel=69 --my-transport=nrf24 --my-serial-groupname=tty --my-config-file=/etc/mysensors.dat" command?Thanks,
-
I had to re-install myself and found my how to wasn't 100% correct for OpenHAB 2.4 so I updated it.
Works with OpenHAB 2.4 and @TimO 's 2.4 jar. Kudos to him for this!
-
My god, had everything almost working and now my PaperUI disappeared on me for the 2nd time.....
I was trying to remove and reinstall MySensors but this is the second time this happens to me I don't want to re-install everything again! Any ideas on how I can get the paperUI back?
I tried removing my "addons.config" from "/var/lib/openhab2/config/org/openhab"
didn't help, also opened it and it didn't have the paperui option, manually added it and still didn't workI am about to give up on OpenHab lol, is there any easier controller to setup? I heard good things about Domoticz but I JUST got OH to kinda work! I was just receiving the wrong values and thought it could of been because of some errors, so decided to re-compile MySensors and install it again.. and then poooof, the whole UI isn't there anymore
EDIT: oh great, even more stuff disappeared, now I only have HOMEBUILDER left!
-
@nizoo91 Stick to addons.cfg in /etc/openhab2/conf/services and don't fiddle with the file you mentioned above.
With package=standard (look for the examples in the comments) the UIs should reappear.
-
@flipflap3 said in OpenHAB 2.4 MySensors Serial Gateway - How to install:
feature:install openhab-transport-serial
can you please add
"feature:install esh-io-transport-mqtt"
to the tutorial it is required to get it to work even in Serial
-
@nizoo91 Just found out myself as well that this was missing. Thanks!
-
@flipflap3 said in OpenHAB 2.4 MySensors Serial Gateway - How to install:
sudo apt-get install oracle-java8-installer
This package has been removed and can't be installed as instructed in the tutorial. As of April, I believe it was removed from that repo.
Reading package lists... Done Building dependency tree Reading state information... Done Package oracle-java8-installer is not available, but is referred to by another package. This may mean that the package is missing, has been obsoleted, or is only available from another source E: Package 'oracle-java8-installer' has no installation candidate
Unsure of how to proceed.
-
I realize it's been few months, but I will post this anyway. As I also recently went through the same ordeal.
Thanks to OP for posting an easy to follow guide.
I found the official install instructions at OpenHAB quite good: https://www.openhab.org/docs/installation/linux.html
...with one exception. Currently, it seems there is some bug going on with their build system or something. I actually had lodged an issue of my own (and even had submitted a PR to correct the documentation) before someone replied, pointing me to the root issue. So for the time being, instead of using https://dl.bintray.com/openhab/apt-repo2 location, you should use https://openhab.jfrog.io/openhab/openhab-linuxpkg repository location.
Further, if you care about issues such as software freedom (which I do a great deal) you might want to consider installing Azul/Zulu Java 8 (make sure it's 8!) which I have done, instead of Oracle Java. Azul's (also excellent) instructions can be found linked from the OpenHAB Linux install instructions. And that would also solve your missing repo problem, obviously.
-
@trs-80 said in OpenHAB 2.4 MySensors Serial Gateway - How to install:
Currently, it seems there is some bug going on with their build system or something. I actually had lodged an issue of my own (and even had submitted a PR to correct the documentation) before someone replied, pointing me to the root issue. So for the time being, instead of using https://dl.bintray.com/openhab/apt-repo2 location, you should use https://openhab.jfrog.io/openhab/openhab-linuxpkg repository location.
I ran into the same thing. Specifically, to get around this, the second instruction under the OpenHAB portion of the original post can be substituted with this:
echo 'deb https://openhab.jfrog.io/openhab/openhab-linuxpkg stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
EDIT: I've just noticed that they've updated the Package Repository Installation instructions to add the command above.
Further, if you care about issues such as software freedom (which I do a great deal) you might want to consider installing Azul/Zulu Java 8 (make sure it's 8!) which I have done, instead of Oracle Java. Azul's (also excellent) instructions can be found linked from the OpenHAB Linux install instructions. And that would also solve your missing repo problem, obviously.
If using Zulu Java, beware that the repos are not being maintained and are behind (see reference for manual instructions).
I used OpenJDK 8 for java with
sudo apt install openjdk-8-jdk-headless
.I'm using an Ethernet gateway (on a separate Raspberry Pi) though which is a twist on all of this.
--Allen
-
Updated to OpenHAB 2.5 with step-by-step instructions
switched to Zulu Java