dg9vh / mmdvmhost-websocketboard Goto Github PK
View Code? Open in Web Editor NEWWebsocket based MMDVM dashboard
License: MIT License
Websocket based MMDVM dashboard
License: MIT License
Hey Kim,
is it possible to add aktive talking OM (red overlay) in the menu "in QSO" like it is in last heard if a OM is talking?
Best
Tim
After last commit not show System Info
990fe94 does not work on every browser. It seems that Android-Chrome and MacOS are included to this.
Futher investigation running.
Hi,
i get this error when i;m trying to start the logtailer
python3 ./logtailer.py
2023-06-15 13:06:21,256 INFO Loading DMR_IDs from file
Traceback (most recent call last):
File "/opt/MMDVMHost-Websocketboard/./logtailer.py", line 427, in
main()
File "/opt/MMDVMHost-Websocketboard/./logtailer.py", line 417, in main
load_callsign_database()
File "/opt/MMDVMHost-Websocketboard/./logtailer.py", line 406, in load_callsign_database
dmrids[tokens[0]] = tokens[1] + "$" + tokens[2].replace("\r", "").replace("\n", "") + "$"
IndexError: list index out of range
Python 3.10.6
pip show websocket-client
Name: websocket-client
Version: 1.2.3
Summary: WebSocket client for Python with low level API options
Home-page: https://github.com/websocket-client/websocket-client.git
Author: liris
Author-email: [email protected]
License: Apache-2.0
Location: /usr/lib/python3/dist-packages
Requires:
Required-by:
How should i proceed. ??
Thanks in advance.
Things to be done for this:
Fix rows with stations ended with "network watchdog" - actually suppressed and looks like txing.
mark row with actual txing station like this:
$('#example').dataTable( {
"createdRow": function( row, data, dataIndex){
if( data[2] == `someVal`){
$(row).addClass('redClass');
}
}
});
Because DMRHost by BrandMeister is not resolving DMR IDs within logfile add an option (with config-line to switch it on/off) to resolve DMR-IDs within logtailer.py.
Needs:
System Info seems to be broken after update / reinstall
Hi Kim,
dashboard work fine but I don't retrive the Modem Information
This is the logtailer log
2021-02-10 17:17:22,108 INFO Connected, remote=('192.168.252.186', 56365), path=/SYSINFO
2021-02-10 17:17:22,145 INFO Modem-Port=/dev/ttyAMA0
2021-02-10 17:17:22,146 INFO Modem-Exception=module 'serial' has no attribute 'Serial'
This is a section of MMDVM.ini
[Modem]
#Port=/dev/ttyACM0
Port=/dev/ttyAMA0
#Port=\.\COM3
#Protocol=uart
#Address=0x22
TXInvert=0
RXInvert=0
PTTInvert=0
......
Add one info for installation:
in requirement module add - sudo pip3 install serial -
Roby IV3JDV
Hi all, the logtailer gives this error:
2022-01-29 12:40:14,189 INFO Closed, remote=('10.0.17.5', 63929), path=/SYSINFO, exception=[Errno 13] Permission denied: '/tmp/mmdvm-version'
and System Info is not displayed
If target of transmission is a dmrid resolve it to callsign.
After last commit I receive this message on Dashboard:
DataTables warning: table id=lastHeard - Requested unknown parameter '3' for row 0, column 3. For more information about this error, please see http://datatables.net/tn/4
until the commit on 21 April everything was working fine
Roby IV3JDV
To have individual links extend TGList.csv by an additional column containing a http-link to a dashboard or something...
If this is existing link the target-name to this instead of brandmeister-link... Should also work for other modes.
Late entries have some kind of display issue.
Like on old dashboard
Hi,
I notice that after the rotation of the logs by the logrotate of the system, MMDVMHost continues to log in the first backup.
That is to say that instead of filling the file MMDVM.log it fills MMDVM.log.1
To start logging in MMDVM.log, I have to restart MMDVMHost
Of course, I have set FileRotate=0 in the [Log] section of MMDVM.ini
[Log]
DisplayLevel=1
FileLevel=2
FilePath=/opt/Logs/MMDVMHost
FileRoot=MMDVM
FileRotate=0
Hi Kim.
After update from 2021-02 to the last have this problem.
Traceback (most recent call last):
Jun 15 19:23:21 DVMega python3[1071]: File "/opt/MMDVMDash/logtailer.py", line 407, in
Jun 15 19:23:21 DVMega python3[1071]: main()
Jun 15 19:23:21 DVMega python3[1071]: File "/opt/MMDVMDash/logtailer.py", line 403, in main
Jun 15 19:23:21 DVMega python3[1071]: websocketserver()
Jun 15 19:23:21 DVMega python3[1071]: File "/opt/MMDVMDash/logtailer.py", line 366, in websocketserver
Jun 15 19:23:21 DVMega python3[1071]: if (config['DEFAULT']['Ssl'] == "True"):
Jun 15 19:23:21 DVMega python3[1071]: File "/usr/lib/python3.7/configparser.py", line 1251, in getitem
Jun 15 19:23:21 DVMega python3[1071]: raise KeyError(key)
Jun 15 19:23:21 DVMega python3[1071]: KeyError: 'Ssl'
How can disable 'Default' ssl or I need to setup ssl on this ?
Using x86 not Pi ARM
Nov 22 22:19:19 FreePBX-Dell-Keller systemd[1]: Started Python3 logtailer for MMDVMDash.
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: /usr/lib/python3/dist-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from rpigpio: No module named 'RPi'
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: 'Falling back from %s: %s' % (name, str(e))))
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: /usr/lib/python3/dist-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from rpio: No module named 'RPIO'
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: 'Falling back from %s: %s' % (name, str(e))))
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: /usr/lib/python3/dist-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from pigpio: No module named 'pigpio'
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: 'Falling back from %s: %s' % (name, str(e))))
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: /usr/lib/python3/dist-packages/gpiozero/devices.py:452: PinFactoryFallback: Falling back from native: unable to determine peripheral base
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: 'Falling back from %s: %s' % (name, str(e))))
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: Traceback (most recent call last):
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: File "/opt/MMDVMDash/logtailer.py", line 16, in
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: from gpiozero import CPUTemperature
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: File "/usr/lib/python3/dist-packages/gpiozero/init.py", line 22, in
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: from .devices import (
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 486, in
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: Device.pin_factory = _default_pin_factory()
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: File "/usr/lib/python3/dist-packages/gpiozero/devices.py", line 453, in _default_pin_factory
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: raise BadPinFactory('Unable to load any default pin factory!')
Nov 22 22:19:19 FreePBX-Dell-Keller python3[4597]: gpiozero.exc.BadPinFactory: Unable to load any default pin factory!
Nov 22 22:19:19 FreePBX-Dell-Keller systemd[1]: logtailer.service: Main process exited, code=exited, status=1/FAILURE
Nov 22 22:19:19 FreePBX-Dell-Keller systemd[1]: logtailer.service: Failed with result 'exit-code'.
Nov 22 22:19:20 FreePBX-Dell-Keller systemd[1]: logtailer.service: Service RestartSec=100ms expired, scheduling restart.
Nov 22 22:19:20 FreePBX-Dell-Keller systemd[1]: logtailer.service: Scheduled restart job, restart counter is at 5.
Nov 22 22:19:20 FreePBX-Dell-Keller systemd[1]: Stopped Python3 logtailer for MMDVMDash.
73 SA7BNT de Tim
Hi Kim,
there is a difference between the log files of MMDVMHost and DMRHost resulting in a broken string and the condition setMode(logline).startsWith("DMR")) could never get true when using DMRHost.
See explanation and workaround below.
DMRHost:
...
M: 2021-01-29 00:32:28 DMR Slot 1, received network end of voice transmission from nnnnnnn to TG 262, 1.6 seconds
M: 2021-01-29 00:50:02 DMR Slot 2, received network voice header from nnnnnnn to TG 26298
...
MMDVMHost:
...
M: 2021-01-29 14:27:59.642 DMR Slot 1, received network end of voice transmission from nnnnnn to TG 262, 0.8 se$
M: 2021-01-29 14:28:08.746 DMR Slot 1, received network voice header from nnnnnn to TG 262
...
Workaround is easy:
change:
function getMode(logline) {
return logline.substring(27, logline.indexOf(","));
}
in html/js/functions.js
to:
...
return logline.substring(23, logline.indexOf(","));
...
Cheers,
Tino - DL8TU
Hi,
Ich wollte mal einen Vorschlag fΓΌr die Programmierer der Dashboards machen: so wie das Callsign in der Last Heard Liste mit qrz verlinkt ist, sollte die TG in der Spalte daneben mit LH Liste der TG im Brandmeister Netzwerk verlinkt sein π
I am using System Journald for logging. All MMDVM Output is send to journald. The win is automatic logrotation and no logfiles, also on Pi or similiar devices this can be canfigured to reside in RAM /run (tmpfs)
I am using the snippets auf mmdvm.service and it`s config file for the Log-Section below.
The idea would be to either to scrap the journal, e.g.
journalclt -u mmdvmhost -f
or if using multiinstanciated units:
journalclt -u mmdvmhost@bm02 -f
Maybe there exists a python module to scrape the journal.
The log output looks like this:
[...]
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: M: 2021-10-20 04:17:12.812 DMR, Opening DMR Network
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.812 Opening UDP port on 62032
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.812 RSSI
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.812 Mapping File: /usr/local/etc/RSSI.dat
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.883 Loaded 14 RSSI data mapping points from /usr/local/etc/RSSI.dat
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.883 DMR Id Lookups
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.883 File: /usr/local/etc/DMRIds.dat
Oct 20 06:17:12 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:12.883 Reload: 24 hours
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.514 Loaded 205993 IDs to lookup table - /usr/local/etc/DMRIds.dat
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 DMR RF Parameters
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Started the DMR Id lookup reload thread
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Id: 2342234
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Color Code: 1
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Self Only: no
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Embedded LC Only: no
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Dump Talker Alias Data: no
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Prefixes: 0
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Source ID White List: 1
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Call Hang: 3s
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 TX Hang: 4s
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 Mode Hang: 20s
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.515 OVCM: off
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: I: 2021-10-20 04:17:21.516 DMR Roaming Beacons Type: off
Oct 20 06:17:21 kermit mmdvmhost@bm02[332]: M: 2021-10-20 04:17:21.516 MMDVMHost-20210617_PS4 is running
# Managed by Ansible - local changes will be overwritten
[Unit]
Description=MMDVMHost %I
After=network-online.target
[Service]
Type=simple
PrivateTmp=true
WorkingDirectory=/run
ExecStart=/usr/local/bin/MMDVMHost /etc/mmdvmhost.%i
SyslogIdentifier=mmdvmhost@%i
LimitNPROC=8
ProtectSystem=true
ProtectHome=true
RestartSec=5s
Restart=on-failure
[Install]
WantedBy=multi-user.target
With this MMDVM config:
[General]
[...]
Daemon=0
[...]
[Log]
DisplayLevel=2
FileLevel=0
FilePath=/tmp
FileRoot=.mmdvm
FileRotate=0
[...]
Actually the only supported format is tabulator-separated so there are two ways to solve this:
a) check format that it is tab-separated and if not do not use resolving
or
b) enhance to space-separated and csv (with , and ;).
I think b) would be the better way...
I find an anomaly when I query the dashboard.
For some reason the log does not display all the entries that are present in the MMDVMHost log file.
As you can see, there is some missing QSO.
Is there a "span" in terms of diration or in QSO entries ?
Here is the beginning of the log file (there is an hour difference with the one displayed by the dashboard):
M: 2021-12-25 23:04:54.745 DMR Slot 1, received network voice header from F5NHJ to TG 3022
M: 2021-12-25 23:04:54.773 DMR Slot 1, received network end of voice transmission from F5NHJ to TG 3022, 0.5 seconds, 0% packet loss, BER: 0.0%
M: 2021-12-25 23:04:57.995 DMR Slot 1, received network voice header from F5NHJ to TG 3022
M: 2021-12-25 23:05:05.777 DMR Slot 1, received network end of voice transmission from F5NHJ to TG 3022, 8.0 seconds, 0% packet loss, BER: 0.0%
M: 2021-12-25 23:24:06.841 DMR Slot 1, received network late entry from IT9ABK to TG 208
M: 2021-12-25 23:24:12.481 DMR Slot 1, network watchdog has expired, 6.2 seconds, 23% packet loss, BER: 0.0%
Here is the end of the log file as I write:
[pi@f5zjh /opt/Logs/MMDVMHost]$ sudo tail MMDVM.log
M: 2021-12-26 12:30:43.690 DMR Slot 2, received network voice header from F5JFA to TG 867
M: 2021-12-26 12:30:44.040 DMR Slot 2, received network end of voice transmission from F5JFA to TG 867, 0.1 seconds, 0% packet loss, BER: 0.0%
M: 2021-12-26 12:34:38.577 DMR Slot 1, received network voice header from FR4KM to TG 647
M: 2021-12-26 12:34:40.615 DMR Slot 1, received network end of voice transmission from FR4KM to TG 647, 2.6 seconds, 0% packet loss, BER: 8.2%
M: 2021-12-26 12:34:46.148 DMR Slot 1, received network voice header from FR4KM to TG 647
M: 2021-12-26 12:34:48.491 DMR Slot 1, received network end of voice transmission from FR4KM to TG 647, 3.0 seconds, 0% packet loss, BER: 7.7%
M: 2021-12-26 12:35:43.581 DMR Slot 2, received network voice header from F5JFA to TG 867
M: 2021-12-26 12:35:44.030 DMR Slot 2, received network end of voice transmission from F5JFA to TG 867, 0.1 seconds, 0% packet loss, BER: 0.0%
M: 2021-12-26 12:38:18.959 DMR Slot 1, received network voice header from FR4KM to TG 647
M: 2021-12-26 12:38:21.024 DMR Slot 1, received network end of voice transmission from FR4KM to TG 647, 2.6 seconds, 0% packet loss, BER: 14.5%
[pi@f5zjh /opt/Logs/MMDVMHost]$
Describe the bug
Data Table Warning Popup-Window
like closed older issue
Screenshots
MMDVM.log:
M: 2021-09-24 23:47:51.285 P25, network end of transmission from 0 to TG 0, 1.4 seconds, 5% packet loss
M: 2021-09-24 23:57:37.055 P25, received network transmission from KA1PIT to TG 10100
M: 2021-09-24 23:57:37.647 P25, network end of transmission from KA1PIT to TG 10100, 0.9 seconds, 0% packet loss
E: 2021-09-24 23:57:37.862 MMDVM DAC levels have overflowed
E: 2021-09-24 23:57:38.114 MMDVM DAC levels have overflowed
E: 2021-09-24 23:57:38.365 MMDVM DAC levels have overflowed
E: 2021-09-24 23:57:38.617 MMDVM DAC levels have overflowed
E: 2021-09-24 23:57:38.868 MMDVM DAC levels have overflowed
M: 2021-09-25 00:39:43.745 P25, received network transmission from 0 to TG 0
M: 2021-09-25 00:39:43.792 P25, network end of transmission from 0 to TG 0, 0.4 seconds, 38% packet loss
E: 2021-09-25 00:39:44.551 MMDVM DAC levels have overflowed
E: 2021-09-25 00:39:44.803 MMDVM DAC levels have overflowed
M: 2021-09-25 00:42:52.580 P25, received network transmission from 0 to TG 10100
M: 2021-09-25 00:42:52.626 P25, network end of transmission from 0 to TG 10100, 0.4 seconds, 0% packet loss
E: 2021-09-25 00:42:53.386 MMDVM DAC levels have overflowed
E: 2021-09-25 00:42:53.637 MMDVM DAC levels have overflowed
M: 2021-09-25 05:23:56.038 P25, network end of transmission from 0 to TG 0, 0.4 seconds, 0% packet loss
in config.js add option to select which tab should be active on first loading of page.
Idea: Option with name of tab to be default...
If there is a problem with reading the source log files, logtailer.py throws an exception and sends an error-message. This should be placed into the JavaScript-Console for better reading/examination.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.