Het Scannerforum
P2000 / C2000 => Overige => Topic gestart door: Remon op 16 januari 2019, 18:32:54
-
Ik heb mij aangemeld op een website waarbij men een e-mail krijgt als een van deze capcodes waarop men is geabonneerd wordt gealarmeerd. Voor het ontvangende e-mailadres heb ik een forward ingesteld die de mail piped naar een PHP script die ik op een webserver heb staan. Het script ontleedt de email en voert ook woordfiltering en filtering van prioriteiten uit. Uiteindelijk worden de meldingen door middel van een webhook op Discord geplaatst.
Voor de aanvoer van de berichten ben ik geheel afhankelijk van de e-mail service en het liefst wil ik een geheel autonoom systeem. Ik ben in het bezit van een headless Raspberry Pi welke ik nu gebruik als rtl_tcp server en ik zou er een extra rtl-sdr dongle bij kunnen prikken om Multimon-ng te draaien (dit heb ik al getest en het werkt). Ik zou ook Pagermon met ingebouwde Discord ondersteuning kunnen gebruiken, maar 99% van de functies gebruik ik niet en ik wil een zo minimaal mogelijke setup.
Kan iemand mij op weg helpen om mijn PHP script eventueel te vertalen naar een geschikt script welke te gebruiken is voor communicatie tussen Multimon-ng en Discord? Ik hoef geen gebruik te maken van databases, capcodes lijsten, webservers, grafische uitvoer etc etc.
-
Je zou wellicht een eind kunnen komen met het combineren van het p2000.py script van https://github.com/dmitryelj/RPi-P2000Receiver][url]https://github.com/dmitryelj/RPi-P2000Receiver (http://[url)[/url] en het discord.js script van pagermon? DIe js kan je zo vanuit php aanroepen volgens mij.
-
Voor de Discord API zijn behoorlijk wat libraries beschikbaar. Zelf heb ik het enkel in Java gebruikt, maar voor PHP zou je kunnen kijken naar https://github.com/restcord/restcord.
-
Even een andere vraag, waarom wil je de meldingen op Discord en niet bijvoorbeeld op Telegram?
Ik heb voorheen met 112PERS een koppeling gemaakt naar Discord, op dit moment wordt dat niet meer ondersteund.
-
Ach, als je toch al Discord gebruikt voor andere dingen scheelt het weer een applicatie :)
-
Omdat ik inderdaad al gebruik maak van de Discord app.
Ik ben intussen al behoorlijk op weg om een werkend Python script te maken. Er rest nog wel een vraag voordat ik verder ga:
Wat gebeurt er als ik de SSH verbinding sluit? Blijft Multimon en het script dan werken? En wat als ik met een nieuwe connectie naar de terminal de berichten wil lezen en het script opstart, draait het script dan twee keer?
-
Makkelijkste weg is om het in tmux of screen (ik zou voor tmux gaan) te draaien. Over tmux is erg veel geschreven om je op weg te helpen: https://robots.thoughtbot.com/a-tmux-crash-course
-
Ik krijg het niet helemaal naar wens geprogrammeerd. Bestaan er een mogelijkheid om de berichten van Multimon-ng in een PHP script in te lezen? Dan kan ik mijn bestaande script hergebruiken.
-
Ik heb het uiteindelijk werkend gekregen met een Python script. :)
(http://i66.tinypic.com/29qo65x.png)
(http://i68.tinypic.com/2wciofk.png)
-
In tmux zo te zien. Fantastisch :)
-
Hij is nog niet helemaal af maar wel functioneel. Eventueel naar wens aan te passen (capcodes, plaatsnamen en woordfilters). Bij de webhook voor Discord kan men een eigen url invullen. Voor wie interesse heeft: https://pastebin.com/SiadUUni
mkdir src
cd src
sudo nano p2000.py
daarna code erin plakken en opslaan met ctrl+o, enter en afsluiten met ctrl+x.
sudo chmod udo+x p2000.py
om het bestand uitvoerbaar te maken voor onderstaande:
Automatisch opstarten met sudo -H -u pi tmux new -d -s p2000-session 'bash -c "cd /home/pi/src; ./p2000.py; bash"'
in /etc/rc.local Daarna in een willekeurige sessie tmux a intikken.
-
En als je meerdere tmux sessies hebt:
tmux ls
tmux a -t $name
:D
-
Op verzoek Remon linkje aangepast ;)
Hij is nog niet helemaal af maar wel functioneel. Eventueel naar wens aan te passen (capcodes, plaatsnamen en woordfilters). Bij de webhook voor Discord kan men een eigen url invullen. Voor wie interesse heeft: https://pastebin.com/SiadUUni
-
Is voor p2000.py specifiek Python2 of Python3 nodig?
Of maakt dit niet uit?
-
Ik heb hem zelf getest in Python 2.x.
-
Bedankt.
Zowel 2 als 3 blijken standaard onderdeel van Raspbian (Stretch).
-
Binnenkort kom ik weer met een update.
Ik ben intussen ook multimon-ng aan het modificeren, zodat groepsalarmeringen als een list met alle capcodes in een array aan stdout wordt aangeboden (in plaats van een nieuwe regel voor elke capcode met daarin de melding).
-
Deze output ziet er beter uit en is veel bruikbaarder in Python:
[[FLEX], [2019-01-30 21:30:41], [1600/2/K/A], [07.095], [002029568, 001420999, 001420022], [ALN], [B1 AMBU 17122 Maasstadweg 3079DZ Rotterdam ROTTDM bon 13913]]
Geen losse regels meer voor elke capcode. :)
-
Binnenkort kom ik weer met een update.
Ik ben intussen ook multimon-ng aan het modificeren, zodat groepsalarmeringen als een list met alle capcodes in een array aan stdout wordt aangeboden (in plaats van een nieuwe regel voor elke capcode met daarin de melding).
Heb je daarvoor een aparte fork opgezet in github of ben je zover nog niet?
Ik ben wel geďnteresseerd in die aangepaste versie. Ik ben bezig geweest met aanpassen pagermon voor groepsmeldingen maar daar zitten toch wat lastige problemen in. Juist omdat multimon-ng niet gegroepeerd aanlevert.
mvg,
Richard
-
Ik kan hem t.z.t. wel beschikbaar stellen.
Ik was eerst aan het experimenteren met een preformatted array in de Python list style, maar Python blijft dit als een string interpreteren.
Een alternatieve methode werkt beter: het bericht opgedeeld met een character (d.m.v. | in mijn test) aanleveren aan stdout. In Python kan je dan met de split functie de string opdelen in een list.
Een ander probleem die optrad is dat de for loop in de flex decoder van multimon-ng bij het verzamelen van alle capcodes (in plaats van voor iedere capcode direct een nieuwe regel naar stdout te schrijven), was dat wanneer tijdens het samenstellen van de regel alweer naar stdout werd geschreven door een andere alarmering, waardoor alles door elkaar liep..
In plaats van het "live" samenstellen naar (verb)printf, schrijft de decoder nu naar sprintf, stopt alles in een array en schrijft als het volledige bericht klaar is pas naar (verb)printf die de losse stukken uit het array haalt.
Ik ben nu nog aan het experimenteren met de grootte van het array.
-
Ik hem het inmiddels uitgebreid getest en alles werkt naar behoren. Downloaden kan hier (http://remonvogelaar.nl/files/groupdecoder.zip).
Voor de zekerheid zou ik de oude demod_flex.c opslaan of hernoemen. Dan de demod_flex.c uit de zip gebruiken en daarna achtereenvolgens cd build + qmake ../multimon-ng.pro + make + sudo make install om multimon-ng opnieuw te compilen.
Ik heb ook een eenvoudig Python script toegevoegd.
-
Hoi Remon,
Ik ben benieuwd. Het meest lastige met pagermon was inderdaad dat je niet weet wanneer alle capcodes verzonden zijn. Met name bij gelijktijdige meldingen inderdaad een dingetje.
IK ben dus heel benieuwd naar jou oplossing. Wordt hij wel iets minder realtime van maar dat mag de pret niet drukken en het verschil is wellicht nauwelijks merkbaar.
Zit wat krap in de tijd maar hopelijk kan ik er dit weekend wat aan werken.
In ieder geval bedankt voor het beschikbaar stellen en ik laat je nog weten of het gelukt is allemaal icm pagermon.
mvg,
Richard
-
zijn er nog ontwikkelingen?
http://86.86.74.22:3010/ (http://86.86.74.22:3010/)
http://86.86.74.22:3000/ (http://86.86.74.22:3000/)
-
De wijzigingen in de code werken. Ik heb een linkje geplaatst aantal berichten hierboven. Je kan het python script als voorbeeld gebruiken voor de aanpassingen in je eigen script.
Er zit echter wel een bug in multimon-ng waar ik geen invloed op heb en deze zit ook in de niet aangepaste versie: soms zit er een groepsbericht en een los bericht in dezelfde frame/cycle (worden gelijktijdig verzonden). Je mist dan het losse bericht als de capcode van het groepsbericht hoger is dan 2029568.
-
De wijzigingen in de code werken. Ik heb een linkje geplaatst aantal berichten hierboven. Je kan het python script als voorbeeld gebruiken voor de aanpassingen in je eigen script.
Er zit echter wel een bug in multimon-ng waar ik geen invloed op heb en deze zit ook in de niet aangepaste versie: soms zit er een groepsbericht en een los bericht in dezelfde frame/cycle (worden gelijktijdig verzonden). Je mist dan het losse bericht als de capcode van het groepsbericht hoger is dan 2029568.
Heb je het al op Github gemeld?
-
Ja, reeds gemeld.
-
Er zit echter wel een bug in multimon-ng waar ik geen invloed op heb en deze zit ook in de niet aangepaste versie: soms zit er een groepsbericht en een los bericht in dezelfde frame/cycle (worden gelijktijdig verzonden). Je mist dan het losse bericht als de capcode van het groepsbericht hoger is dan 2029568.
Weet je het zeker? Vandaag ontvangen via multimon-ng:
(http://www.linato.net/files/remon1.jpg)
Twee groepsberichten en een 'los' bericht in 00.126
-
Ik heb het nog niet exact kunnen reproduceren, maar dan vermoed ik dat er nog een aantal factoren zijn die meespelen bij dit probleem. Bijvoorbeeld het aantal short instructions die afgehandeld moeten worden, of als er een groepsbericht, los bericht en een nieuwe short instruction in een frame zit. Ik zie het overigens ook alleen maar gebeuren als het losse bericht ná het groepsbericht komt.
De ondersteuning voor groepsberichten is maar mijn mening vlug en slordig toegevoegd met o.a. rommelige indentatie.
-
mag ik vragen welke os jullieop de raspberry gebruiken