-
-
Notifications
You must be signed in to change notification settings - Fork 150
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add signalk-server to Venus OS #517
Comments
Some notes on the OE npm-fetcher:
Success! So same for mdns:
serialport:
Note that after above steps, those recipes are still in the devtool workspace. See devtool docs for how to get them in one of the metas. |
Building an image nodejs 8.4.0 on it works fine. Tested on the raspberrypi. It adds 15MB of diskspace:
|
Just now remembered that signalk requires npm runtime. For (un)installing plugins from the admin. Added that. Effect on the disk space is a further chunk of 18.034 bytes out. Installed npm version is 5.3.0. I've also added npm to above summary. Remaining space before starting the next experiment (run |
Prepare for installing signalk-server (manually! not yet as part of the rootfs) by setting up python-compiler. It is required by the (few) packages that need pre-compilation. Above I already mentioned a possible way around this.
After that there is a measily 7MB of free disk space left. Perhaps next step is to indeed pre-install serialport, socketcan and optionally also mdns on the rootfs. |
Also added a receipt for the node package
Status update: looks like I have a recipe that packages signalk-server (minus brypt, serial-port and the others) up without issues. Now there is an error when I try to install the generated swu using Which I'll look into next time I have time.
Latest error:
|
Fyi bcrypt was replaced with bryptjs in 6c09750. |
Thanks, I’ll update the version I’m using; it is still v1.0.0 |
Success! I've managed to build a Venus OS images for the raspberrypy, including signalk-server v1.2.1, together with its dependencies. And it runs fine for as far as I can see. For some reason that I don't understand yet, the full images can be burned to sdcard without issues (and 43MB of free space). While installing the swu gives above mentioned error. Diskspace used by signalk v1.2.1 and its dependencies is 142.6MB. Which on a v2.20~22 raspberrypi image leaves 42MB free on the rootfs. Details:
|
I tested some things:
Next on the todo list:
For the run file:
|
Would a USB GPS puck be something worth testing re serialport & NMEA0183 testing? Is CAN/NMEA2000 access possible? Plugin configuration is stored in |
Yes. I don’t have one at home though. Let me see what I can find.
Yes. |
An update: I've successfully built, installed and ran the new image on the Venus GX. Also I've updated the top section of this issue to reflect current status. |
An update:
I cannot think of any other required default configs. Let me know if I forgot something. |
We are changing the partitioning of the Venus GX in production: larger sizes; to better accommodate signalk or similar applications: Will come into effect as soon as we officially release v2.20 and thereafter deploy it to the factory. Note that it might take quite a while before we start shipping units partitioned like that. Until then the procedure that I mentioned elsewhere (where?) is required to increase partitions on a unit. |
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
v2.20~59-signalk was tested on a NMEA2000 network with AIS and such on a Venus GX. Works great! Also I've rebased and cleaned up the commits: https://github.com/victronenergy/meta-victronenergy/tree/matthijs/signalk |
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
All right, i made a newer version, that includes node red. Files here: Note that for the Venus GX, you one time need to burn the install sdcard img and run that to repartition. And from then onwards you’ll only need the swu file. And, also with the larger partitions, it’s still possible to run the normal swu files that now don’t have signalk |
Can you add a hint to disable auto updates to IV? |
Hey @mcules, Yes done, thanks! |
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
An update:
|
I have created a script to give you the list of ttys that the server is using: #658 This outputs a json list of the devices:
Let m know if that's ok, or if you would like it in a different format. |
Making node-gyp, required by npm for packages with code that needs compiling, work on the target, requires these packages: python-compiler, python-misc, packagegroup-core-buildessential. Maybe it also needs python-dev. First I tried to it one by one; to minimize the number of added packages:
Note that in the end, npm is perhaps not necessary to run on the target. But it sure is nice for development. |
Hi all, the project to get a Venus OS with Signal K included is merged with a similar project to get Node-RED into Venus OS. This discussions mostly continues in the Node-RED thread, it includes a v2.60~22 image with Signal K on it: victronenergy/venus#378 Also, I've started on a manual, its here: https://www.victronenergy.com/live/venus-os:extended. Contributions and help to that are super welcome. You can make a login on the upper right of that page. Don't hesitate too much about making a mistake. The changes made will be regularly reviewed. |
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1 as nmea2000. can1 is the VE.Can port - other machines: no default dataproviders. The recipe uses an unusual way to package a npm project. See comments in the recipe for why. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.20 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.20 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.22 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.14 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
The data provider configuration is machine specific: - beaglebone: can1, which is the VE.Can port, as nmea2000. - einstein: can0, which is the VE.Can port, as nmea2000. - other machines: no default dataproviders. Includes signalk-venus-plugin v1.24.25 in the recipe. Some day it might be better to have that in a separate recipe, but that didn't prove to be straightforward. SignalK/signalk-server#517 https://github.com/SignalK/signalk-server/releases https://github.com/sbender9/signalk-venus-plugin/releases
Venus Large image has had SK for some time, so closing this. |
And then nice to haves
The short story:
Status: its ready to be tested; and perhaps its even finished enough to be just used.
How can you use it? See (draft) Venus OS Signalk manual.
Why should I use this to have Signalk? Well; that depends on what you're looking for. If you want to have all things under control; self install, for example, a raspberrypi, configure it, tweak it, modify it; maintain it; and manually install Signalk as well as keep it all update date -manually-; and either already have- or want to learn linux commandline skills, then go here, do that and forget about Venus OS + Signalk.
If you want to use Signalk as if you'd gone to the store and bought a box that should -more or less- just work; then Venus OS + Signalk is good to consider. Its intention is to be a finished (technical-)consumer type product that doesn't need any special computer skills; and especially does not require linux skills.
Where the Venus GX comes in is that its like a raspberrypi; but then in a nice box; with nice connectors; wide input power supply (9 to 70 VDC); canbus; and more. Not such a rat's nest of usb cables like Pi setups.
What about updates? Both Venus OS as well as Signalk keep improving; new versions are released regularly. I'll be regularly making a new version now of
Venus OS + Signalk
; which can be installed easily: note that for now; you can only update by USB stick. Using the Firmware update menu will result in installing a normal image: without signalk. Settings; such as configured data providers; will remain in place when doing either update: going back to a normal one; or a newer one that has signalk.What about support? For support on signalk; use its Slack or mailinglist. For support on Venus OS + SignalK; preferably use the #victron channel in SignalK slack. Whatever you do; don't use official Victron support channels; they are not setup to help with this.
Are there limitations? Yes, compared to a self-installed signalk there are limitations. Especially when it comes to installing plugins. Installing plugins that need compilation is currently not possible; and also all plugins will be installed on the data partition; which has its limits when it comes to diskspace. The idea is to have all normally used plugins installed by default: so if you think something is missing; please ping me on the #victron channel on Slack.
OK, I'm convinced; where can I get this? See (draft) Venus OS Signalk manual.
The long story:
0. Introduction
See here for what Venus OS is. The idea is to either add SignalK to standard Venus as released by Victron, or otherwise at least be able to make an alternative build of Venus that includes nodejs & SignalK server.
Its current status is that I can build Venus images that include signalk for both the Venus GX hardware (has two canbus ports) and also the raspberrypy image (for rpi2 & 3) builds. There is no way to put it on the CCGX, as its flash memory is too small. For more details, see below.
This project is looking for people that have spare time. See below for how to get up to the current state of the project and start contributing 😄.
I. Context
Getting Victron data into SignalK server is already possible, see the venus-plugin. Its common use now is to run SignalK-server one one machine (a raspberrypi most often), and then connect the Venus running on another machine (a Color Control GX, or Venus GX for example).
This project is about running it all in one piece of kit; removing the need for an additional box.
And also this project is an option to make SignalK available more easy: ie pre-installed and very easily and robustly updateable. Note that other options are also pursued elsewhere, see for example #464. And also the recent Docker work by @tkurki (tbd. is there info or a link to somewhere?).
Note that manually installing SignalK on a Venus device has been done, and is documented here.
II. The work:
1. add nodejs & npm. DONE.
2. add signalk. DONE.
3. disk space. DONE.
Adding nodejs and signalk requires quite some extra space (see somewhere below in the comments for how much). And see this overview for available space on various hardware that can run Venus. In more detail per machine (=hw model):
The text was updated successfully, but these errors were encountered: