Skip to content

Develop #47

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

Open
wants to merge 99 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
99 commits
Select commit Hold shift + click to select a range
b221f0f
draft fixes for html-plugin, (#30)
ferishili Aug 8, 2024
5329b00
fix loading layouts
tibroc Aug 8, 2024
e38fbb7
prefix plugin logs
tibroc Aug 8, 2024
34b1c5e
Update packages
SamuelWei Dec 2, 2024
c04f140
Add CI
SamuelWei Dec 2, 2024
e37bbf9
Remove branch restrictions
SamuelWei Dec 2, 2024
c1221b1
Include package-lock.json
SamuelWei Dec 2, 2024
531b828
Disable fast failing
SamuelWei Dec 2, 2024
262bfeb
Fix working dir
SamuelWei Dec 2, 2024
fbac958
Remove package file
SamuelWei Dec 2, 2024
4ff3cdf
Add to gitignore
SamuelWei Dec 2, 2024
39afcb2
Install npm without lock file
SamuelWei Dec 2, 2024
e7a73af
Set node version to 20
SamuelWei Dec 2, 2024
5ccca7c
Downgrade elgato-stream-deck
SamuelWei Dec 2, 2024
05c270f
Add code for ubuntu
SamuelWei Dec 2, 2024
e2d95ba
Add libusb
SamuelWei Dec 2, 2024
4fc8bd9
Add more build tools
SamuelWei Dec 2, 2024
481adc9
run node 16
SamuelWei Dec 2, 2024
f8cd29e
Vite exclude node-hid
SamuelWei Dec 3, 2024
ee45a73
Disable npm rebuild for electron
SamuelWei Dec 3, 2024
9df214c
Set release type to github
SamuelWei Dec 3, 2024
a4edf1f
Add details to package.json
SamuelWei Dec 3, 2024
2d344a0
Remove the dir
SamuelWei Dec 3, 2024
aa93862
Add github token
SamuelWei Dec 3, 2024
f4a69b3
Update to node 20
SamuelWei Dec 3, 2024
e19758b
Add after install
SamuelWei Dec 3, 2024
e7e9a2c
Move udev rules to lib
SamuelWei Dec 3, 2024
469269a
Set streamdeck brightness
SamuelWei Dec 3, 2024
9803638
Add udev trigger
SamuelWei Dec 3, 2024
393f114
Upload windows and mac packages
SamuelWei Dec 3, 2024
d1162cf
Remove spaces from artifacts
SamuelWei Dec 3, 2024
86df51b
Add close button
SamuelWei Dec 3, 2024
5e8da44
Fix cs
SamuelWei Dec 3, 2024
75753c7
Fix mac artifact upload
SamuelWei Dec 3, 2024
1191d89
Debug mac artifacts
SamuelWei Dec 3, 2024
b0045df
Fix macos
SamuelWei Dec 3, 2024
217baf8
Move mac to dmg
SamuelWei Dec 3, 2024
bbf7fd7
Fix build
SamuelWei Dec 3, 2024
6a875eb
Bump to new plugin sdk
SamuelWei Dec 4, 2024
6148f3b
Add room hub
SamuelWei Dec 5, 2024
0f0407b
Remove old pairing server
SamuelWei Dec 5, 2024
169ce99
automatically build a docker container image for the room hub
tibroc Dec 5, 2024
255aad3
pins should be strings not integers
tibroc Dec 5, 2024
927769c
ignore ping messages
tibroc Dec 5, 2024
2ba9f7b
fix error message
tibroc Dec 5, 2024
3e1b9fa
do not verify booleans in structs
tibroc Dec 5, 2024
a56eb67
Add messages for room and plugin disconnect, improve error handling
SamuelWei Jan 1, 2025
0243331
Restructure code
SamuelWei Jan 2, 2025
c037cb0
Move randomString to main
SamuelWei Jan 2, 2025
71c58fd
Replace env vars with command line arguments
SamuelWei Jan 2, 2025
4be5b1b
Adjust dockerfile and readme
SamuelWei Jan 2, 2025
f7c5b66
Cleanup, restructure
SamuelWei Jan 3, 2025
e7c6161
Improve logging, add timeout (enforce ping)
SamuelWei Jan 6, 2025
d86f51d
Fix double propagation of disconnect
SamuelWei Feb 20, 2025
25b9a94
Add lock to send methods to fix concurrent writes to websocket connec…
SamuelWei Feb 20, 2025
b654037
make pin rotation interval configurable and also add the capability t…
tibroc Feb 20, 2025
612e425
fix env variable name
tibroc Feb 20, 2025
e4a7e24
Refactor for new room hub
SamuelWei Feb 20, 2025
ec9094a
Add flag to show dev tools
SamuelWei Feb 20, 2025
ae2b267
adjust plugin to new pairing protocol
tibroc Feb 20, 2025
9cc7b00
update plugin sdk, add cancel buttons and some cleanups
tibroc Feb 24, 2025
944b3c1
Rename join parameters attribute
SamuelWei Feb 25, 2025
1ae3543
react on pairing fails
tibroc Feb 25, 2025
3e9bc31
fix join parameters in types
tibroc Feb 25, 2025
66da135
fix broken commit 4d64d68
tibroc Feb 25, 2025
9c61fe8
react correctly on room disconnect
tibroc Feb 25, 2025
7563628
join url messaging with only one url and layout index
tibroc Feb 25, 2025
c9acb18
Code cleanup, refactor to use self generate other join urls
SamuelWei Feb 25, 2025
0a64c4f
Fix invalid message send to wrong recipient
SamuelWei Feb 26, 2025
62891f7
Rewrite RoomConfig structure
SamuelWei Feb 26, 2025
86ef7f6
message join urls now contains layout label
tibroc Feb 26, 2025
3f9d371
Revert "message join urls now contains layout label"
tibroc Feb 26, 2025
be337b9
fix layout index selection
tibroc Feb 26, 2025
aad9674
Refactor layout selection, add auto-unmute
SamuelWei Feb 26, 2025
d425a03
Merge pull request #35 from bigbluebutton/rewrite-room-hub
tibroc Feb 26, 2025
f4ae417
Merge pull request #37 from bigbluebutton/rewrite-with-manifest
tibroc Feb 26, 2025
e1b9ddb
Merge pull request #36 from bigbluebutton/Refactor-appliance-for-new-…
tibroc Feb 26, 2025
b45344a
Add function to query media devices
SamuelWei Feb 26, 2025
94eacc9
allow to find screen also by id
tibroc Feb 28, 2025
a08af79
alllow zeroes in layoutIndex
tibroc Feb 28, 2025
893205f
Merge pull request #38 from bigbluebutton/more-flexible-screen-identi…
tibroc Feb 28, 2025
c58982e
fix layout selection error and some cleanpus
tibroc Mar 3, 2025
c014141
Add mute/unmute HID actions
SamuelWei Mar 3, 2025
07ae6b2
Add keyboard HID for testing
SamuelWei Mar 3, 2025
dbdab70
Fix unmute button wrong mapping
SamuelWei Mar 4, 2025
8643871
Move layout join url generation to allow layout changes
SamuelWei Mar 5, 2025
174fd48
Merge pull request #39 from bigbluebutton/add-hid-mute/unmute
tibroc Mar 5, 2025
f77ec92
Reuse old windows
SamuelWei Mar 5, 2025
5cde2eb
Reuse old windows
SamuelWei Mar 5, 2025
3cc7321
Allow switching between 3 fixed layouts
marwyg Mar 7, 2025
cc47f2a
Merge pull request #42 from marwyg/switch-layout
tibroc Mar 7, 2025
54925b8
Add buttons to streamdeck for layout switch
marwyg Mar 7, 2025
1382167
Merge pull request #43 from marwyg/switch-layout
tibroc Mar 7, 2025
3d4e123
Hopefully removed all references and actions
klaraloreen Mar 6, 2025
1bf2651
debug no layouts in plugin
tibroc Mar 7, 2025
1586d24
Merge pull request #44 from bigbluebutton/no-layouts-in-plugin
tibroc Mar 7, 2025
5394353
Hide menu bar in appliance running on windows
marwyg Mar 12, 2025
2f68e20
Merge pull request #45 from marwyg/auto-hide-menu-bar
tibroc Mar 13, 2025
d2e233c
Merge pull request #40 from bigbluebutton/switch-layout
tibroc Mar 13, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
76 changes: 76 additions & 0 deletions .github/workflows/build-appliance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
---
name: 📦 Build Appliance electon app
on:
push:
# branches: [ "main"]
# paths:
# - 'appliance-application/**'
pull_request:
branches: [ "main" ]
paths:
- 'appliance-application/**'


jobs:
release:
runs-on: ${{ matrix.os }}

strategy:
fail-fast: false
matrix:
os: [macos-latest, ubuntu-latest, windows-latest]

steps:
- name: Check out Git repository
uses: actions/checkout@v4

- name: Install Node.js and NPM
uses: actions/setup-node@v4
with:
node-version: 20

- name: Install system dependencies on Ubuntu
if: matrix.os == 'ubuntu-latest'
run: |
sudo apt -y update
sudo apt install -y g++-12 build-essential pkg-config libudev-dev libusb-1.0-0 libusb-1.0-0-dev
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 100

- name: Install dependencies
run: npm install
working-directory: appliance-application


- name: Build
run: npm run compile
working-directory: appliance-application
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Upload .deb artifact
uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-latest'
with:
name: "BBB-RoomMediaConnector.deb"
path: appliance-application/dist/*.deb

- name: Upload .rpm artifact
uses: actions/upload-artifact@v4
if: matrix.os == 'ubuntu-latest'
with:
name: "BBB-RoomMediaConnector.rpm"
path: appliance-application/dist/*.rpm

- name: Upload .exe artifact
uses: actions/upload-artifact@v4
if: matrix.os == 'windows-latest'
with:
name: "BBB-RoomMediaConnector.exe"
path: appliance-application/dist/*.exe

- name: Upload .app artifact
uses: actions/upload-artifact@v4
if: matrix.os == 'macos-latest'
with:
name: "BBB-RoomMediaConnector.dmg"
path: appliance-application/dist/*.dmg
36 changes: 36 additions & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
name: Publish Docker image

on:
push:

jobs:
push_to_registries:
name: Push Docker image to multiple registries
runs-on: ubuntu-latest
permissions:
packages: write
contents: read
steps:
- name: Check out the repo
uses: actions/checkout@v4

- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}

- name: Build and push Docker images
uses: docker/build-push-action@v6
with:
context: ./room-hub/
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
126 changes: 0 additions & 126 deletions .github/workflows/publish-on-pypi.yml

This file was deleted.

47 changes: 0 additions & 47 deletions .github/workflows/test-pairing-server.yml

This file was deleted.

2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ appliance-application/node_modules
appliance-application/packages/main/dist
appliance-application/packages/preload/dist
appliance-application/packages/renderer/dist
package-lock.json

# Python
.Python
Expand Down Expand Up @@ -40,3 +39,4 @@ venv/
__pycache__
.pytest_cache/

.vscode/settings.json
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ The system consists of three software components that need to be run and configu

1. The [room appliance application](appliance-application) needs to be run on a device (like Intel NUC) that connects to the room's audiovisual input and output devices. It holds the room configuration, i.e. how the media devices should be used in BBB and displays a PIN number that is used to pair the room with a BBB meeting.
2. The [BBB HTML Plugin](html-plugin) is where you enter the PIN number displayed on the appliance to connect the running meeting to the room.
3. The [pairing server](pairing-server) brokers the connection between the appliance in the room and the BBB meeting.
3. The [room hub](room-hub) brokers the connection between the appliance in the room and the BBB meeting.

Both the Plugin and the appliance application use the GraphQL interface of BBB 3 to communicate with BBB server.

Expand Down
26 changes: 24 additions & 2 deletions appliance-application/.electron-builder.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,36 @@ module.exports = async function () {
output: 'dist',
buildResources: 'buildResources',
},
files: ['packages/**/dist/**', "packages/**/assets/**"],
files: ['packages/**/dist/**', 'packages/**/assets/**'],
extraMetadata: {
version: getVersion(),
},

npmRebuild: false,

appId: 'org.bigbluebutton.room-media.appliance',

// Specify linux target just for disabling snap compilation
linux: {
target: 'deb',
target: ['deb', 'rpm'],
},
win: {
target: ['portable'],
},
mac: {
target: 'dmg',
},
deb: {
afterInstall: 'installer/linux/after-install.tpl',
},
rpm: {
afterInstall: 'installer/linux/after-install.tpl',
},

publish: [
{
provider: 'github',
},
],
};
};
2 changes: 2 additions & 0 deletions appliance-application/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,5 @@ thumbs.db
# Editor-based Rest Client
.idea/httpRequests
/.idea/csv-plugin.xml

package-lock.json
2 changes: 1 addition & 1 deletion appliance-application/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ Place the settings config file `settings.json` in the following folder:

2. Customize the config file:

- You have to adjust the `control_server.ws` setting to point to the `/ws_room` route of the pairing server (e.g. `https://your-bbb-server.org/hybrid/ws_room` if you follow the [instructions](../pairing-server/) and install the pairing server on a bbb host).
- You have to adjust the `control_server.ws` setting to point to the `/ws_room` route of the pairing server (e.g. `https://your-bbb-server.org/hybrid/ws_room` if you follow the [instructions](../room-hub/) and install the pairing server on a bbb host).
- Next `room.name` should be set to the name of the room that should be shown during the pairing process.
- You can also set `preferred_pin_screen` to the name of the screen that should be used to display the pairing pin. If the screen it not found, it uses the first screen it finds.
- Lastly you need to define the layouts, a few examples are provided in `room.layouts`.
Expand Down
30 changes: 30 additions & 0 deletions appliance-application/installer/linux/after-install.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#!/bin/bash

# Write udev rules for BBB Room Connector
cat <<EOT > /lib/udev/rules.d/50-bbb-room-connector.rules
SUBSYSTEM=="input", GROUP="input", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0084", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0086", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0090", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="009a", MODE="660", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="00aa", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0063", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006c", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="006d", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0084", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0086", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0090", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="009a", MODE="660", TAG+="uaccess"
KERNEL=="hidraw*", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="00aa", MODE="660", TAG+="uaccess"
EOT

# Reload udev rules
udevadm control --reload-rules
udevadm trigger
Loading