VariFlight ADS-B - Flightradar en chinois

Flightradar, à certains égards, est devenu un nom familier, remplaçant en fait la notion de «site où vous pouvez regarder des avions en temps réel» . Bien qu'il existe en fait plusieurs sites de cette taille, et encore plus de petits projets, vous pouvez souvent voir dans les médias les informations sur l'événement aéronautique avec la phrase "selon le site Flightradar" et une capture d'écran d'une autre ressource.

Il existe un certain nombre de publications sur Habré sur le radarporting dans lesquelles ou dans des commentaires auxquels non seulement Flightradar est mentionné. Dans cette publication, je parlerai du service chinois de suivi du trafic aérien et de son récepteur ADSB chinois , qu'ils envoient gratuitement.



Le radar radar est une activité suffisamment intéressante pour captiver un nombre notable de personnes. Plusieurs articles sur Habré décrivent assez bien l'essence de la leçon:


Le récepteur reçoit, transmis par avion, un signal à une fréquence de 1090 MHz, déchiffre et transmet dans un certain format. Par exemple, comme ceci:

{"updatetime":1537902225,"UTC Time":"2018-09-25 19:03:45","anum":"TCETM","fnum":"KKK6944","position":{"long":30.66455078125,"lat":39.351677},"height":10005.06,"speed":888.96,"angle":130}, 

Cette activité est non seulement intéressante, mais est devenue l'activité de plusieurs entreprises:


Peu de gens pensent comment ils gagnent leur vie et comment fonctionnent des services comme Flightradar. Un exemple de cela peut être vu sur wikipedia " service Web public qui permet une surveillance en temps réel de la position des avions dans les airs ." L'article lui-même et le titre donnent une fausse impression de Flightradar comme une sorte de service de divertissement.

En fait, ayant émergé comme un passe-temps au début des années 2000, ces entreprises ont rapidement atteint une période de récupération et augmentent leurs revenus chaque année. Par exemple, Flightaware, fondée en 2005, est devenue rentable dès 2006, gagnant plus de 1 million de dollars au cours des 18 premiers mois et affichant une croissance annuelle de 40 à 75%. Selon certaines ressources, les revenus annuels de Flightaware dépassent 9 millions de dollars et ceux de Flightradar de plus de 2 millions de dollars.

Si en Europe il y a Flightradar, aux USA - Flightaware, alors en Chine il y a VariFlight. De même, le service négocie les statuts de vol, les statistiques et les archives de vol, effectue des analyses et des prévisions pour les clients - organisations et clients individuels.

VariFlight propres mots:

  <meta name="description" content="VariFlight         .    ,      ,    .    ,     ,         ."> <meta name="keywords" content=" ,   ,  ,  ,  ,  ,  ,  ,  ,   ,  ,  ,  ,  ,  "> <meta property="og:url" content="http://www.variflight.com/ru/"> 

Les entreprises échangent des données, tant les leurs que celles obtenues, par exemple, de la Federal Aviation Administration des États-Unis. Mais vous pouvez tirer le meilleur parti de vos propres récepteurs, dont le fonctionnement ne coûte rien à l'entreprise. ils sont installés par des amateurs de radarspotting, il vous suffit de dépenser de l'argent pour la fabrication et l'expédition. Par conséquent, à partir d'un moment donné, les entreprises ont commencé à vendre et à distribuer gratuitement leurs récepteurs. Gratuit là où l'entreprise n'a pas encore de couverture avec son réseau de récepteurs et où il n'y a pas de données.

Le coût des données justifie la distribution «gratuite» des récepteurs (attention au texte sous le tableau - le récepteur reste la propriété de Flightaware, officiellement loué gratuitement).


En 2015, le réseau Flightradar comptait plus de 8 000 récepteurs actifs et Flightaware en avait environ 4 500. Mais Flightaware a commencé à distribuer les récepteurs deux ans auparavant, et Flightradar avait déjà construit son réseau depuis près de dix ans. Il existe actuellement plus de 15 000 récepteurs sur le réseau Flightaware. Le logiciel récepteur Flightaware est constamment amélioré et fonctionne actuellement avec les données FMSDATA, FMSWX.

Carte de localisation des récepteurs en mars 2017:

image

Orange est pour les récepteurs Flightaware gratuits, blanc pour les récepteurs maison, rouge pour PlanePlotter payant.

Voici la couverture du réseau de récepteurs Flightaware en décembre 2015:


Et en mars 2017, le réseau de récepteurs Flightaware ( état actuel sur le site extérieur ) a assuré une telle couverture:

image

Il n'est pas toujours possible d'installer des récepteurs, donc en 2018, les données des récepteurs au sol sont complétées par les données des satellites Iridium NEXT - "Pour la première fois, il sera possible de surveiller en permanence les avions partout dans le monde . "


Couleur gris-bleu - données des satellites Iridium NEXT. Vert et jaune (le dernier est MLAT ) - données des récepteurs au sol.

Le rayon de la zone couverte par une station est limité par la courbure de la surface de la Terre et les obstacles couvrant l’horizon et ne dépasse pas 450 km au mieux. Et dans le "cas habituel" d'environ 150 km. Avec un passage troposphérique rare pour cette radiofréquence, il est possible de regarder au-delà de l'horizon. Un exemple des zones de couverture maximale des stations diffusant sur Planeradar.ru:


Les pics nets dans les diagrammes de réception ne sont que des cas isolés de réception à de très grandes distances.


L'animation ci-dessous montre ce qui entraîne la nécessité d'envoyer des récepteurs. En dehors de l'UE / USA, ce hobby n'est pas très populaire. Il peut y avoir une raison au coût d'un passe-temps, et cette carte indique indirectement le niveau de richesse, l'enseignement technique et la densité de population dans la région. La question est peut-être d'un intérêt pratique - les utilisateurs qui transmettent les données de leurs récepteurs reçoivent un compte Flightaware d'entreprise gratuit , d'un coût de 90 $ par mois.


Et donc la situation est décrite. Le marché de ce service est en croissance, le marché a besoin de plus de données et VariFlight a également commencé à déployer son réseau. En avril 2018, VariFlight a annoncé qu'il recherchait des volontaires pour héberger du matériel gratuit. Un exemple d'une telle publication dans une publication Instagram .

Et en août, je suis tombé sur cette offre pour commander le récepteur gratuitement sur http://flightadsb.feeyo.com (le site a été fermé en septembre 2019 - le nouveau site flightadsb.variflight.com et le lien pour commander l'appareil ici ). Après avoir étudié le site, j'ai remarqué que la société recherchait des membres du réseau volontaire dans les pays proches des frontières de la Chine. Et en remplissant le questionnaire, il ne s’attendait pas particulièrement à ce que le District fédéral du Sud soit dans la zone d’intérêt de l’entreprise.


Dans l'application elle-même, il est nécessaire d'indiquer sur la carte l'emplacement d'installation ( Emplacement d'installation ), le sol de l'installation d'antenne sur le bâtiment ( Étage d'installation , par exemple 7/9 - 7e étage d'un immeuble de 9 étages), le code de l'aéroport le plus proche ( Code d'aéroport - j'ai indiqué le code IATA) et Téléchargez les photographies d'horizon depuis le site d'installation. Le reste est presque le même que la commande sur Aliexpress, à l'exception des articles Titre, Nationalité, Occupation, Société. Il est rempli en anglais avec un nom complet.

Après avoir vérifié le courrier quelques semaines plus tard, j'ai trouvé deux courriels de l' ADSB 展示 系统 (système d'affichage de l'ADS-B) que la demande a été approuvée presque immédiatement et que le colis se précipitait depuis longtemps, ayant déjà passé les douanes à l'époque.


Dans la deuxième lettre, il y avait un nom d'utilisateur, un mot de passe et un numéro de piste du colis. Et aussi une instruction que je n'ai pas remarquée et lue quand ... vous savez vous-même quand ils lisent habituellement l'instruction.


La connexion correspondait au nom complet dans l'application, et le mot de passe est clairement envoyé de la même manière à tout le monde. Par conséquent, allez changer le mot de passe immédiatement (et connectez-vous si nécessaire).

En général, l'expression «Ceci est une sorte de non-sens» du jeu Sudden-strike est apparue de plus en plus souvent dans ma tête, si quelqu'un se souvient de la façon dont les Allemands parlent russe dans le jeu avec un accent. Parfois calme, parfois bruyant.

Au fait, le profil était la seule page en anglais, alors tout sera en chinois. Sur Habré wtigga a publié un excellent article sur Internet chinois "Internet chinois et logiciels: à propos de douloureux" . J'ai ressenti toute la douleur tout à l'heure. Si vous n'avez pas lu, il est temps de vous préparer.


Le navigateur Google Chrome avec la fonction de traduction vous aidera à travailler sur le site, mais de nombreuses pages qui se sont avérées ne pas toujours être réalisables pour lui.


Les lieux seront des phrases drôles.


Et donc connectez-vous avec les données du deuxième e-mail.


Et allez à Informations personnelles . En fin de compte, Google Chrome ne peut pas toujours traduire une page ou elle échoue pas la première fois, et dans ce cas, après plusieurs tentatives de traduction automatique, nous avons dû copier le texte dans Google Translate. Par conséquent, je poste un conseil pour ceux qui sont confrontés au même problème.

Il y a deux onglets sur la page, dont l'actif est marqué d'une ligne rouge. Le premier, vous ne pouvez rien toucher.


  1. Nom complet
  2. Votre numero de telephone
  3. Votre email
  4. Code d'aéroport
  5. Le nom de votre récepteur ADSB

Le point QQ est le messager chinois Tencent QQ .

Dans le deuxième onglet, modifiez le mot de passe


  1. Ancien mot de passe
  2. Nouveau mot de passe
  3. Répétez le nouveau mot de passe

En dehors de cela, la traduction automatique fonctionne presque toujours. La conception du plan du site est très proche du site Flightradar et les "fonctionnalités" de la traduction n'entravent pas son utilisation.


Après une inspection détaillée, le service est différent, par exemple, une fonctionnalité intéressante que Flightaware n'a pas - une carte thermique , traduite par Google Chrome par "analyse thermique".


Une caractéristique intéressante sur certains vols:


Il n'y a probablement aucune information sur les aéroports de départ et d'atterrissage pour ce vol.

Présentation de l'emballage et du récepteur


Selon le numéro de piste, le colis a été envoyé le 6 septembre et reçu le 18 septembre. La boîte a des dimensions solides qui ont surpris les postiers. Sur le chemin du bureau de poste à l'intérieur, quelque chose a secoué, sonné et roulé.


La boîte ouverte a été quelque peu surprise par le manque de matériaux d'emballage.


À titre de comparaison, la boîte du récepteur Flightaware.


Étonnamment, le contenu de la boîte ne semble pas être affecté. Seulement sur l'antenne il y avait une égratignure - le film a été arraché.


Le récepteur lui-même a les inscriptions de seulement deux connecteurs - alimentation et HDMI. En plus de deux, tous les connecteurs sont affichés sur un côté. LAN, 2 ports USB, connecteur à quatre broches (l'hypothèse que cette interface série a été confirmée en composant le BCM 14 (8 broches TXD / Transmit),
BCM 15 (10 broches RXD / réception)), alimentation 5 volts et connecteur SMA (femelle) pour antenne.


Sur le côté opposé, derrière deux trous dans le boîtier, il y a des LED vertes et rouges. Et à côté se trouve un autocollant avec le "numéro de série" du récepteur, enregistré à la main. Le récepteur dispose également de HDMI et microUSB.


Le couvercle du récepteur a deux oreilles pour un montage mural, ce qui le distingue positivement du même boîtier que le récepteur Flightaware, auquel le fabricant ne fournissait que quatre pieds en silicone en bas.


Vérifier si ces deux oreilles peuvent être utilisées pour monter le récepteur:


Flightaware Flightfeeder à l'envers:


Pour comparer les tailles de récepteur:


La question naturelle est "qu'est-ce qu'il y a à l'intérieur?" Après avoir retiré le couvercle fixé par 4 vis, on voit une telle disposition.


Les connecteurs sont situés sur une carte de récepteur séparée, réalisée sous la forme d'une carte d'extension pour le Raspberry Pi 3 modèle B V1.2.

À titre de comparaison, une photographie d'un Flightaware Flightfeeder (G6) sans couvercle. Cette génération de récepteurs a été envoyée jusqu'en 2017 environ. Construit sur RPi 2 modèle B v.1.1 et récepteur-décodeur Mode-Beast simplifié sur un canal.


Le verso de cette conception a caché un élément inattendu. Un radiateur massif situé en bas de la planche est une surprise. Le besoin en est incompréhensible (une semaine plus tard je pense que c'est une «performance tropicale». Dans mes conditions, le radiateur est légèrement chaud).


De plus, la carte d'extension est connectée au connecteur RPi à quatre broches avec trois fils soudés aux points de test PP27 (USB VCC), PP44 (USB D-),
PP45 (USB D +).


C'est-à-dire rien ne peut être connecté au connecteur USB supérieur droit. Par conséquent, la photo du boîtier située ci-dessus montre que des deux connecteurs USB appariés, la fente du boîtier est uniquement opposée à celle la plus proche du LAN.


Ils ont fait de même dans Flightaware, soudant le récepteur aux contacts de l'un des connecteurs.

La plupart des cartes d'extension sont des écrans métalliques. Parmi les parties visibles, les connecteurs sont d'un côté, et de l'autre côté se trouvent deux indicateurs et une certaine «bobine» avec des robinets. Rappelle le shunt avec une résistance variable. Peut-être 1div0 , auteur de l'article «Pourquoi plier les pistes?» sait ce que c'est. Pendant le fonctionnement normal, la LED verte est allumée. Dans quels cas le voyant rouge est allumé - je ne sais pas. Jusqu'à ce que je regarde son inclusion.


Sur le côté des connecteurs, il y a des connecteurs d'alimentation et d'antenne, et un connecteur à quatre broches de destination inconnue.

Tous les appareils électroniques sont cachés sous un grand couvercle en fer blanc de l'écran. Avec Flightaware Flightfeeder, la carte du récepteur n'est pas blindée. Lors du forum Flightaware, les développeurs ont répondu à cette question que le boîtier métallique du récepteur lui-même est suffisant pour le protéger des interférences externes.


Une tentative de regarder sous l'écran a été un succès de la deuxième approche. Le couvercle est tombé et il s'est avéré ...


... il s'est avéré que tout était en vain - le marquage avec des micropuces a été soigneusement coupé.


Pour l'avenir, je dirai qu'il s'est avéré être un récepteur RTLSDR presque ordinaire - RTL2832U DVB-T (0bda: 2838), appelé "dongles", "whistles", et qui est consacré à plusieurs articles sur Habré qui donnent une idée de ces appareils et comment ils ont simplifié et réduit la mise en œuvre de la réception et du traitement des signaux radio sur les ordinateurs. Par exemple:


La dernière décrit bien l'arrière-plan du problème:
La publication de la puce RTL2832U pour les récepteurs de télévision numérique au format DVB-T n'a pas promis de sensations, car Realtek était déjà un peu en retard avec sa sortie. En 2010, une norme DVB-T2 plus progressive avec un codage plus efficace des informations était déjà en cours d'introduction, donc au départ la nouveauté n'a pas attiré beaucoup d'attention. Pendant deux ans, des tuners USB bon marché basés sur celui-ci ont été utilisés pour leur usage prévu, jusqu'à ce qu'au début de 2012, il y ait eu une fuite de certaines informations techniques sur les modes de fonctionnement de cette puce. Il s'est avéré que pour recevoir la radio analogique (FM) et numérique (DAB) dans la bande VHF, cette puce utilise le principe du décodage logiciel d'une bande de fréquence préalablement numérisée dans l'éther. C'est-à-dire En gros, il numérise un signal haute fréquence provenant de l'entrée d'antenne et le filtrage d'une porteuse spécifique et sa détection (extraction d'informations utiles) du flux numérique reçu est laissé au processeur central. Évidemment, cela a été fait pour des raisons d'économie, de la même manière qu'au moment de la fermeture du Dial-UP, des «soft-modems» extrêmement bon marché, qui ne représentaient également qu'une paire avancée de DAC et ADC, se sont répandus, et tout le traitement du signal a été effectué par le CPU dans fil avec la priorité la plus élevée.

Contrairement aux «tuners réguliers» que j'ai, cette instance d'ID usb 0bda: 2832 a un numéro de série à 17 chiffres.
Bus 001 Périphérique 005: ID 0bda: 2832 Realtek Semiconductor Corp. RTL2832U DVB-T
Trouvé Rafael Micro R820T tuner
C'est-à-dire analogue au «sifflet bleu» utilisé pour créer des récepteurs ADSB faits maison. Sur la photo, le récepteur est sur OrangePI.


En remontant le récepteur, j'ai installé un radiateur au cas où. Acheté spécifiquement pour l'achèvement des routeurs et autres équipements domestiques.


Alimentation 5V 2A. Il semble plus solide que l'alimentation pour Flightaware Flightfeeder. Mais avec une prise chinoise ... J'ai essayé de me rappeler où j'avais l'adaptateur qui traînait.


Dans une boîte en carton blanc était une si belle pochette en velours.


"... dans la poitrine - un lièvre, dans un lièvre - un canard, dans un canard - un œuf, dans un œuf - une aiguille ..."


À l'intérieur se trouvait un puzzle de trois adaptateurs, qui a résolu la question «où se trouve mon adaptateur».


Dans une boîte en carton marron se trouvait un parafoudre "CA-23RP 2.5GHZ 400W Made in Japan". Je ne connais pas cette configuration d'autres récepteurs ADS-B. Très raisonnable pour la protection contre les accidents de faible puissance.


L'antenne intérieure est susceptible de tester le récepteur sans installer d'antenne externe. Ne convient pas pour une utilisation pratique. Mais elle est vendue sur Aliexpress / Ebay comme une "antenne ADS-B", mais son véritable objectif est donné par l'inscription sur la semelle magnétique. J'avais l'habitude d'attraper des avions sur cette antenne dans un rayon de 30 à 40 km.

Près de l'adaptateur N (femelle) - SMA (mâle). Peut-être un cadeau en cas de connexion d'un filtre ou d'un amplificateur à faible bruit.


Câble coaxial pour une antenne de 5 mètres avec connecteurs N et SMA, et un câble à paire torsadée de 10 mètres ("100% cuivre sans oxygène, blablabla").


Câble d'antenne marqué KOPA PLESS RG400-KF MIL-C-17. Câble coaxial flexible à double tresse googlé M17 / 128-RG400 RG-400 avec une couleur de gaine différente:

  • Fréquence de fonctionnement maximale 6 GHz
  • À une fréquence de 1,20 GHz, l'atténuation maximale est de 0,54 dB / m

Il est très douteux que ce soient les caractéristiques du câble chinois. Soit dit en passant, Flightaware a inclus un câble d'antenne moche, bien qu'italien. Le raccourcissement du câble de l'antenne à plusieurs dizaines de centimètres trois fois a augmenté le nombre de paquets reçus par le récepteur Flightaware.


Antenne extérieure et sa fixation au mât.


La bizarrerie de FlightFeeder ADS-B VariFlight sur Facebook:


L'antenne est légèrement plus petite que Flightaware


Support de mât Flightaware de duralumin


Un cadeau avec le symbole de VariFlight. A en juger par les inscriptions au dos, cette étiquette doit être accrochée aux bagages en cas de perte à l'aéroport, en renseignant les coordonnées du propriétaire.



Première inclusion


La mise sous tension n'a fondamentalement rien changé à l'apparence de l'appareil. Seuls les indicateurs LAN étaient allumés, le routeur a un nouveau nom d'hôte raspberrypi dans la liste des adresses IP dhcp émises. HDMI avait la sortie de démarrage RPi habituelle et la demande de connexion.


Et c'est tout. L'interface Web attendue pour ces appareils sur IP: 8080 n'était pas disponible. L'analyse des ports de l'appareil n'a trouvé que le port 22. Dans une tentative de connexion en tant qu'utilisateur et mot de passe par défaut, il a été envoyé de loin dans la console et dans ssh:

 login as: pi pi@raspberrypi's password: Access denied 

Le récepteur s'est allumé et éteint plusieurs fois, est resté allumé pendant des jours en supposant qu'il pourrait télécharger quelque chose à ce moment-là ou essayer d'atteindre des serveurs en Chine. Ni le voyant rouge ni le voyant vert ne s'allument.

À ce moment, je suis allé hors site à la recherche de FAQ, de support technique ou de quelque chose d'autre qui pourrait dire que cet appareil devrait et ne devrait pas. Je me suis connecté pour la première fois, mais cela n'a rien changé fondamentalement - il n'y a pas de formulaires de contact ou de formulaires de commentaires. La seule chose qui a été trouvée était que le récepteur était lié à un compte et avait le statut hors ligne. J'ai remarqué que le système l'a vu pour la dernière fois sur le réseau le 2 septembre à 17h18, heure de Pékin, 4 jours avant son envoi par courrier. C'est-à-dire Il a été vérifié et connecté au compte.


Après avoir passé quelques jours à flâner sur les sites de "l'Internet chinois", que certains liens renvoyaient hors site ou qui étaient liés hors site, et fatigué de leur conception d'origine, j'ai réalisé que ce produit ne bénéficiait d'aucune assistance technique. Et à ce moment-là, je me suis souvenu de deux e-mails de l'ADSB 展示 系统 (système d'affichage de l'ADS-B).

«C'est une sorte de non-sens» - encore une fois, j'ai entendu une voix familière avec un accent dans la tête. Mon e-mail à cette adresse est retourné PostMaster feeyo.com


Et puis l'œil a attrapé l'attachement à la deuxième lettre, qui avait précédemment échappé au regard (en raison du nouveau design inhabituel de GMail). Cela s'est avéré être une instruction d'installation pour VariFlight ADS-B. Il est temps de découvrir comment cela devait fonctionner.

Rencontrez 飞 常 准 ADS-B 设备 安装 说明


Vous trouverez ci-dessous une traduction des instructions en 6 pages et en deux langues, dont la plupart sont des illustrations.

Instructions d'installation du VariFlight ADS-B



Brève description


VariFlight ADS-B est un équipement conçu pour les passionnés de l'aviation civile pour suivre les avions. Le kit comprend un récepteur ADS-B, une alimentation, un cordon de raccordement (cordon de raccordement), une antenne et un câble pour celui-ci.


Emplacement de l'antenne


, ; . ADS-B , .


, ADS-B , :

  1. .
  2. - ADS-B .
  3. .


, . IP , DHCP.





ADS-B


La première méthode.
Dans les paramètres de votre routeur, recherchez l'adresse IP du récepteur ADS-B et ouvrez http // XXX.XXX.XXX: 8080 dans un navigateur Web, où XXX.XXX.XXX est l'adresse IP interne de votre réseau local.


Deuxième méthode:

ouvrez le lien flightadsb.variflight.com dans un navigateur Web, connectez-vous et cliquez sur Airport


La troisième méthode, uniquement pour les volontaires chinois

Pour les utilisateurs chinois, l'utilisation de WeChat est possible.


Sur cette instruction a pris fin. Conformément à cette instruction, l'appareil fonctionne partiellement - il reçoit l'IP sur le réseau local, mais n'affiche pas d'interface Web où vous pouvez reconnaître dump1090 - un décodeur Mode S conçu pour les dongles RTLSDR et utilisé dans de tels appareils.

image

Sans fonctionnement de dump1090, aucune donnée n'arrivera sur le serveur. Il est étrange que l'appareil ait fonctionné pendant la vérification avant l'expédition. "C'est une sorte de non-sens." Étant donné que les Chinois ne sont en aucun cas intéressés par le sort de l'appareil et qu'aucun signe d'assistance technique n'a pu être trouvé, ma conscience est complètement propre si j'essaie de le réparer moi-même.

Nous prenons le contrôle de l'appareil


Après avoir démonté le récepteur, immédiatement après réception, j'ai fait l'image microSD dans l'état avant la première mise sous tension et j'ai examiné un peu le contenu, soupçonnant immédiatement que le récepteur envoyait des données au serveur - il y avait des fichiers et des scripts avec des adresses de service dans / root /.

Réinitialiser le mot de passe utilisateur PI


Les instructions pour changer le «mot de passe oublié» avec des images peuvent être trouvées sur ce lien .

Je démonte à nouveau le récepteur. Pour accéder à microSD, vous devez dévisser toutes les vis et retirer les deux cartes. À l'avenir, en travaillant avec le récepteur, je ne l'ai pas remonté dans le bâtiment. a dû changer deux microSD avec des systèmes différents.

Nous retirons la microSD de Rpi, faisons une copie de sauvegarde sur l'ordinateur, si vous ne l'avez pas encore fait, et éditons le fichier - cmdline.txt .

 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait 

À la fin de cette ligne, ajoutez

 init=/bin/sh 

Nous renvoyons microSD à RPi, connectons le moniteur et le clavier. Nous connectons le pouvoir. Lorsque les lignes ne fonctionnent plus à l'écran, appuyez sur Entrée. Une invite de console apparaît, dans laquelle nous tapons

 mount -rw -o remount / passwd pi sync exec /sbin/init 

Les lignes fonctionnent encore et encore, attendez qu'elles s'arrêtent, puis désactivez-les. Nous obtenons microSD de RPi. Sur l'ordinateur, nous éditons ou restaurons la copie de sauvegarde de cmdline.txt - supprimez «init = / bin / sh».

La dernière fois que nous retournons microSD à RPi. Allumez. Connectez-vous avec succès avec un nouveau mot de passe. Nous activons ssh en entrant raspi-config et en sélectionnant SSH dans le menu.

Ensuite, avec la commande supérieure, je veux voir comment vit le récepteur et remarquer de manière inattendue les processus wget et ... dump-1090. Scène silencieuse. Je vérifie dans le navigateur Web http // XXX.XXX.XXX: 8080 - il y a une interface.


Pour ne pas dire cela de manière inattendue, mais certainement inhabituelle. Je vérifie la deuxième méthode dans les instructions - tout va bien là aussi: l'icône du récepteur est devenue verte, et en dessous de la liste des avions qu'il a entendus.

Il serait possible de terminer là-dessus, mais tout d'abord, utiliser RPi3 juste pour cela serait impardonnable. Et deuxièmement, si cet appareil fonctionnait de manière stable. Par exemple, il a disparu de la liste des adresses IP du routeur DHCP, alors qu'il était disponible lors de l'accès à l'IP précédemment reçue, et en même temps il n'y avait pas d'image sur HDMI. Mais le plus important était l'instabilité de l'émission. Selon les statistiques sur la page du récepteur, cela a fonctionné plusieurs heures par jour. Parfois une journée entière, parfois plusieurs heures, parfois zéro heure. Il a fallu plusieurs jours pour étudier le système - tous les logiciels n'étaient pas installés. Dépôts chinois ... La voix allemande a finalement convaincu que nous devons fabriquer un récepteur ADS-B pour une personne en bonne santé, et pour cela nous devons rouler l'image PiAware sur une autre microSD. La microSD d'origine était toujours utile pour savoir comment cela fonctionne.Au minimum, enregistrez les fichiers depuis / root. Rendre une image désirable.

PiAware


PiAware est un logiciel Linux pour transférer des données de vol vers FlightAware. Contient la fourche dump1090-mutability. Selon les développeurs, l'une des différences est qu'il n'envoie pas de packages aux serveurs FlightAware s'ils ne diffèrent pas du premier. C'est-à-diresi l'avion n'a pas changé de vitesse, d'altitude, alors ces données n'ont pas besoin d'être traitées, et réduisent ainsi la charge sur le serveur.

Il y a environ deux ans, FlightAware a commencé à traduire des textes du site en russe. Et beaucoup pour créer votre propre station PiAware peut être trouvée hors site . L'essence de la création d'une station sur RPi avec RTLSDR est d'écrire sur la microSD de l'image PiAware sur Raspbian Linux terminée à l' aide d' Etcher . Ensuite, avant d'insérer la carte dans le RPi et d'attendre le téléchargement, vous devez apporter quelques modifications. Pour activer l'accès SSH, créez un fichier vide sans l'extension portant le nom ssh dans la partition de démarrage (/ partition de démarrage). Et dans le fichier piaware-config.txt, vous pouvez effectuer les réglages nécessairespar exemple, spécifiez une IP statique ou activez le WiFi et spécifiez un SSID / mot de passe, à condition qu'un adaptateur WiFi USB pris en charge soit connecté. Les mêmes paramètres peuvent être définis à partir de la console avec la commande piaware-config Setting_name Possible_values .

Si vous avez déjà un compte Flightaware, après 5 minutes, la station sera attachée au compte , après avoir reçu un identifiant unique. Et le récepteur aura sa propre page de statistiques.

Par défaut, l'utilisateur PI possède un mot de passe de détection de vol. C'est une bonne idée de changer votre mot de passe immédiatement.

"Tests"


Les tests sont entre guillemets, juste des impressions. Avoir deux appareils avec presque le même logiciel peut évaluer leurs capacités.

J'ai un récepteur Flightaware gratuit et la première chose que j'ai connue a été l'antenne VariFlight complète. Je viens de remplacer l'antenne Flightaware par elle. Et pendant que j'étudiais le récepteur VariFlight, des statistiques FlightFeeder ont été collectées sur la page Flightaware. La conclusion est décevante. Bien que rien n'ait changé dans la portée maximale, comme FlightFeeder, dans le sens de la visibilité directe, en attrapant certains à une distance de 400 km, mais les statistiques des avions par heure / jour ont baissé 2-3 fois. Accepte sûrement les côtés pour plus de 300 kilomètres, mais voit un peu moins de messages. Je ne sais pas ce qu'il y a à l'intérieur du corps de l'antenne - ce n'est pas pliable.

Une antenne Flightaware était connectée au récepteur VariFlight et montrait des statistiques du même ordre. Et avec une antenne native encore plus basse.


Je vais décoder les statistiques. Statistiques 10-05 à 10-07 est un récepteur VariFlight avec une antenne Flightaware. Le 10-08, l'antenne complète était connectée et du 10-09 au 10-11 les statistiques du kit VariFlight. 10-12, le script send_message.py a été modifié pour collecter les données de Flightaware Flightfeeder. Après cela, VariFlight a envoyé des données et 10-13 - des statistiques quotidiennes basées sur les données Flightaware Flightfeeder. De plus, par exemple, pour 10-18 - 396 vols, 814176 packages, pour 10-19 - 471 vols, 860415 packages.

Évaluons dans quelle mesure le récepteur VariFlight est sensible aux interférences radio. Pour ce faire, numérisez la plage de 800 MHz à 1200 MHz et générez une carte thermique.

 sudo apt-get install python-imaging sudo wget https://raw.githubusercontent.com/keenerd/rtl-sdr-misc/master/heatmap/heatmap.py sudo chmod +x heatmap.py sudo systemctl stop dump1090-fa sudo rtl_power -f 800M:1200M:100k -i 30 -c 50% -e 30m -g 30 -F 9 >scan.csv 

Après une demi-heure (-e 30m), la numérisation s'arrête et une image est générée.
 ./heatmap.py scan.csv scan.png 

Redémarrage de l'appareil pour restaurer dump1090.
Et copiez l'image résultante sur un ordinateur à l'aide de (win) scp.
Il s'agit d'un fragment d'un balayage de carte thermique à une fréquence de 1090 MHz. Image complète disponible par clic.



Les rayures jaune vif sont une communication mobile. Rien d'inhabituel - il n'a pas de préfiltres comme le Flightfeeder, et il est fortement interrompu par les stations mobiles. En cela, il est absolument identique au simple «sifflet bleu» mentionné précédemment. Peut-être que la fabrication sous la forme d'une carte d'extension spéciale a un certain sens, par exemple, le rôle des «pistes pliées» sur cette carte n'est pas clair. Fabriquant une carte spécialisée, il ne serait pas difficile d'installer à la fois un amplificateur à faible bruit et un filtre SAW à 1090 MHz. En regardant les scripts de l'appareil, j'ai eu une idée de pourquoi cela a été fait - un script appelé acars.py.


L'ampleur et le filtre amélioreraient les caractéristiques du récepteur montre un exemple du groupe susmentionné sur Facebook. Au lieu d'un récepteur ordinaire, l'un des utilisateurs de VariFlight Box a connecté un dongle spécialisé de Flightaware, ce qui l'a amené à la cote supérieure d'un millier d'utilisateurs (bien sûr, l'emplacement d'installation et une autre antenne ont également été affectés).

FlightAware lance deux modèles de dongles - Pro Stick et Pro Stick Plus, qui sont toujours le même «sifflet bleu» mais ont un amplificateur de signal préliminaire, et ce dernier a en outre un filtre SAW qui élimine les signaux inutiles dans les zones avec beaucoup d'interférences, par exemple dans les villes, ainsi que ces modèles sont équipés d'un connecteur d'antenne SMA. Ces dongles sont utilisés dans les récepteurs Flightaware Flightfeeder Orange.


avec couvercle retiré


Le nom du script "acars.py" laisse entendre que l'absence de filtres n'est pas une erreur ni une sauvegarde. Système d'adresse et de communication des communications aériennesLe système d'adressage et de communication des communications des aéronefs (ACARS) est un système de radiocommunication numérique utilisé dans l'aviation pour transmettre des messages courts entre un aéronef et des stations au sol. La fréquence de fonctionnement d'ACARS en Europe est de 131,725 ​​MHz. Par conséquent, l'appareil ne peut pas avoir de filtre uniquement pour 1090 MHz, sinon il ne pourra pas recevoir de signal à 131 MHz. Ce qui se trouve à l'intérieur de l'antenne est inconnu, je ne vais pas le casser, mais il est évident que sa "large couverture" est également assurée par les créateurs. De manière similaire à la méthode ci-dessus, une carte thermique a été générée dans la plage de 100 MHz à 500 MHz. Un fragment d'une carte thermique de balayage à une fréquence de 450 MHz. Image complète également disponible par clic.



Sur la carte thermique, vous pouvez voir les panneaux de commande, les capteurs de sécurité, les sonnettes sans fil, les capteurs sans fil des stations météorologiques, les radio-amateurs, les stations de radio FM, etc.

Par exemple, en définissant rtl_433, vous pouvez voir les données des capteurs sans fil voisins des stations météorologiques et, si vous le souhaitez, les utiliser comme auteur de cet article .


Et en exécutant rtl_tcp, vous pouvez écouter la radio amateur et la radio FM.


Fait intéressant, tous les jambons talkie-walkie ne gardent pas précisément la fréquence. C'était drôle de voir comment les radio-amateurs évaluaient la façon dont ils entendaient l'interlocuteur, et la fréquence de l'une des stations de radio était quelque part en marge.

Mais le récepteur chinois sur le système natif a montré une précision de - 0 PPM. Vous pouvez lire sur la technique de mesure PPM sur Habr dans l'article quwy "Encore une fois sur la réception de HF sur RTL-SDR" . Il est fortement conseillé d'ajuster le PPM pour une meilleure réception. C'est ce que les Chinois ont fait. Il y a une petite erreur sur Piaware qui peut et doit être corrigée en spécifiant la valeur PPM correcte avec la commande sudo piaware-config rtlsdr-ppm <valeur PPM>.
Instructions d'étalonnage RTLSDR avec rtl_test et kalibrate-rtl
  rtl_test -p 

10 , . ppm.

kalibrate-rtl.
 sudo apt-get install libtool autoconf automake libfftw3-dev git clone https://github.com/asdil12/kalibrate-rtl.git cd kalibrate-rtl git checkout arm_memory ./bootstrap ./configure make sudo make install kal -s GSM900 

, «power» .
kal -c < > -e < PPM, rtl_test> -v
«average absolute error». ppm, , sudo piaware-config rtlsdr-ppm < PPM>


En conséquence, nous pouvons dire que le récepteur VariFlight pour le fer est légèrement meilleur que ce que vous pouvez assembler vous-même. C'est une bonne base pour commencer à pratiquer ce passe-temps (et cela a montré des tests de fer qui peuvent être utilisés pour un large éventail d'autres tâches. De plus, il y a trois ports USB gratuits).

Un inconvénient certain en tant que récepteur ADSB est le logiciel et l'interface du site chinois. Si vous ne pouvez rien faire avec le site chinois, vous pouvez modifier le logiciel du récepteur lui-même. Le moyen le plus simple consiste à installer PiAware et à configurer la distribution sur VariFlight. Ensuite, vous pouvez configurer la distribution sur Flightradar24 et y créer un compte avec des conditions spéciales. Un exemple d'utilisation d'un compte avec des fonctionnalités spéciales est l'accès aux données d'archives Flightaware (le crash de la An-148 Saratov Airlines).
image


Nous donnons des données à VariFlight


Nous revenons au contenu du répertoire racine. Il peut être trouvé sur GitHub . Les noms de fichiers indiquent sans ambiguïté leurs fonctions.

 root@raspberrypi:/home/pi# ls /root -l total 24 drwxr-xr-x 8 root root 4096 Nov 22 2016 dump1090 drwxr-xr-x 5 root root 4096 Oct 16 18:54 get_message -rwxr-xr-x 1 root root 567 Nov 22 2016 install.sh drwxr-xr-x 7 root root 4096 Nov 22 2016 rtl-sdr -rwxr-xr-x 1 root root 62 Nov 22 2016 synctime.sh -rwxr-xr-x 1 root root 1300 Nov 29 2016 task.sh 

install.sh
 #!/bin/bash apt-get update apt-get install cmake libusb-1.0-0-dev build-essential vim ntpdate -y apt-get remove ntp cd get_message/ mv rtl-sdr-blacklist.conf /etc/modprobe.d/ mv dump.sh /etc/init.d/dump chmod +x /etc/init.d/dump mv task.sh ../ chmod +x ../task.sh cd ../rtl-sdr/ mkdir rtl cd rtl cmake ../ -DINSTALL_UDEV_RULES=ON make install ldconfig cd ../../dump1090/ make cd /root/get_message/ python get_ip.py ps aux | grep py update-alternatives --config editor crontab -e * * * * * /root/task.sh >/dev/null 2>&1 * * */6 * * /root/synctime.sh >/dev/null 2>&1 


Les dernières lignes de install.sh montrent que cron ajoute deux tâches - exécutez task.sh toutes les minutes et synctime.sh tous les 6 jours

synctime.sh
 #!/bin/bash /usr/sbin/ntpdate 115.182.42.248 > /dev/null 2>&1 


115.182.42.248 - BeiJing wanglianxuntong Telecom Technology Co., Ltd, Pékin, Chine.
remarques: Veuillez noter que CNNIC n'est pas un FAI et n'est pas des
remarques: autorisé à enquêter sur les plaintes d'abus de réseau.
remarques: Veuillez contacter le technicien ou l'administrateur du réseau.
task.sh
 #!/bin/bash ps -eaf | grep dump1090 | grep -v grep if [ $? -eq 1 ] then /etc/init.d/dump stop sleep 1 /etc/init.d/dump start echo `date "+%G-%m-%d %H:%M:%S"`" dump1090 restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" dump1090 running" echo "------------------------------------------------------------------------" fi ps -eaf | grep send_message.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python -O /root/get_message/send_message.py & echo `date "+%G-%m-%d %H:%M:%S"`" send_message restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" send_message running" echo "------------------------------------------------------------------------" fi ps -eaf | grep get_ip.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/get_ip.py echo `date "+%G-%m-%d %H:%M:%S"`" get_ip restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" get_ip running" echo "------------------------------------------------------------------------" fi 


Le script task.sh, exécuté toutes les minutes par cron, vérifie et, si nécessaire, redémarre les scripts dump1090, send_message.py et get_ip.py.
 pi@raspberrypi:~ $ ps -eaf | grep dump1090 | grep -v grep root 830 1 14 Oct12 ? 13:49:25 ./dump1090 --net --net-sbs-port 30003 pi@raspberrypi:~ $ ps -eaf | grep get_ip.py | grep -v grep pi@raspberrypi:~ $ ps -eaf | grep send_message.py | grep -v grep root 838 1 0 Oct12 ? 00:09:20 python -O /root/get_message/send_message.py 

Le répertoire get_message contient des scripts python, dont l'un, send_message.py, envoie des données.

 root@raspberrypi:/home/pi# ls /root/get_message -l total 40 -rw-r--r-- 1 root root 954 Nov 22 2016 acars.py -rw-r--r-- 1 root root 1341 Nov 22 2016 acars.sh -rw-r--r-- 1 root root 173 Nov 22 2016 config.ini drwxr-xr-x 8 root root 4096 Nov 22 2016 dump1090 -rwxr-xr-x 1 root root 1731 Nov 22 2016 get_ip.py drwxr-xr-x 3 root root 4096 Nov 22 2016 get_message1117 -rwxr-xr-x 1 root root 3400 Dec 7 2016 init.sh -rw-r--r-- 1 root root 33 Oct 16 18:51 md5.txt -rwxr-xr-x 1 root root 1143 Oct 12 18:16 send_message.py -rw-r--r-- 1 root root 16 May 27 2016 UUID 

init.sh
 #!/bin/bash path='/root/get_message/' DATE=`date -d "today" +"%Y-%m-%d_%H:%M:%S"` result="" UUID="" execom="" FromServer="" SourceMD5="" device="" if ps -ef |grep dump1090 |grep -v grep >/dev/null then device="adsb" elif ps -ef |grep acarsdec |grep -v grep >/dev/null then device="acars" else device="unknow" fi IpAddr=`/sbin/ifconfig |grep "addr:" |grep -v 127.0.0.1 |cut -d ':' -f2 |cut -d ' ' -f1` if [ -f "/root/get_message/UUID" ] then UUID=`cat /root/get_message/UUID` fi execut(){ while read command do eval $command if [ $? -ne 0 ] then execom=$command result=0 break fi result=1 done <$path/package/exe.txt } removefile(){ rm -rf $path/package rm -f $path/*tar.gz* } main(){ ps -eaf | grep "pic.veryzhun.com/ADSB/update/newpackage.tar.gz" | grep -v grep if [ $? -eq 1 ] then /usr/bin/wget -P $path -c -t 1 -T 2 pic.veryzhun.com/ADSB/update/newpackage.tar.gz if [ -f "$path/newpackage.tar.gz" ] then dmd5=`md5sum $path/newpackage.tar.gz|cut -d ' ' -f1` if [ "$SourceMD5" = "$dmd5" ] then /bin/tar -xzf $path/newpackage.tar.gz -C $path echo $SourceMD5 > $path/md5.txt /bin/touch /usr/src/start.pid echo $DATE > /usr/src/start.pid execut if [ $result -eq 1 ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom=$execom -d message="success" http://receive.cdn35.com/ADSB/result.php else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom=$execom -d message="fail" http://receive.cdn35.com/ADSB/result.php fi removefile else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="post file has been changed" http://receive.cdn35.com/ADSB/result.php removefile fi else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="download failed" http://receive.cdn35.com/ADSB/result.php removefile fi fi } if curl -m 2 -s pic.veryzhun.com/ADSB/update.php >/dev/null;then removefile FromServer=`curl -m 2 -s -d UUID="$UUID" -d IpAddr="$IpAddr" -d Device="$device" pic.veryzhun.com/ADSB/update.php` SourceMD5=`echo $FromServer|cut -d ' ' -f1` length=`echo $SourceMD5 |wc -L` if [ $length -ne 32 ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="md5 style error" http://receive.cdn35.com/ADSB/result.php exit fi else curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="curl failed" http://receive.cdn35.com/ADSB/result.php exit fi DesMD5=`cat $path/md5.txt` if [ "$SourceMD5" = "$DesMD5" ] then curl -m 2 -s -d UUID=$UUID -d date=$DATE -d execom="------" -d message="no update,md5 without change " http://receive.cdn35.com/ADSB/result.php exit else main fi 


Le script init.sh vérifie s'il y a une mise à jour et définit un nouveau send_message.py
get_ip.py
 import socket import fcntl import struct import urllib2 import urllib import sys,os import ConfigParser import hashlib import json import uuid config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) uuid_file=sys.path[0]+'/UUID' if os.path.exists(uuid_file) : file_object = open(uuid_file) mid = file_object.read() file_object.close() else : mid = uuid.uuid1().get_hex()[16:] file_object = open(uuid_file , 'w') file_object.write( mid ) file_object.close() def send_message(source_data): source_data=source_data.replace('\n','$$$') f=urllib2.urlopen( url = config.get("global","ipurl"), data = source_data, timeout = 60 ) tmp_return=f.read() request_json=json.loads(tmp_return) request_md5=request_json['md5'] del request_json['md5'] tmp_hash='' for i in request_json: if tmp_hash=='' : tmp_hash=tmp_hash+request_json[i] else : tmp_hash=tmp_hash+','+request_json[i] md5=hashlib.md5(tmp_hash.encode('utf-8')).hexdigest() if (md5 == request_md5): operate(request_json) else : print 'MD5 ERR' print "return: "+tmp_return; def get_ip_address(ifname): skt = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) pktString = fcntl.ioctl(skt.fileno(), 0x8915, struct.pack('256s', ifname[:15])) ipString = socket.inet_ntoa(pktString[20:24]) return ipString def operate(request_json): if request_json['type'] == 'reboot' : os.system('/sbin/reboot') elif request_json['type'] == 'code' : fileHandle = open ( urllib.unquote( request_json['path'] ) , 'w' ) fileHandle.write( urllib.unquote( request_json['content'] ) ) fileHandle.close() else : print 'OK' eth=get_ip_address('eth0') send_message(mid+'|'+eth+'|') 


Le sens de l'échange de réseau effectué par le script, je ne comprends pas particulièrement. Un UUID unique est généré s'il en manque un. Et il y a un certain échange avec les adresses spécifiées dans le fichier config.ini. Ce script particulier est probablement responsable de la liaison des données transmises et de l'IP avec le compte.

La ligne "if request_json ['type'] == 'reboot': os.system ('/ sbin / reboot')" est à noter.

 [global] name = NEW ipurl = http://receive.cdn35.com/ADS-B_IP.php sendurl = http://adsb.feeyo.com/adsb/ReceiveCompressADSB.php version = 1.0 passwd = 'null' 

Et enfin, le script envoyant les données
send_message.py
 import socket import urllib2 import urllib import sys import ConfigParser import zlib import base64 import os,uuid serverHost = 'localhost' serverPort = 30003 config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) uuid_file=sys.path[0]+'/UUID' if os.path.exists(uuid_file) : file_object = open(uuid_file) mid = file_object.read() file_object.close() else : mid = uuid.uuid1().get_hex()[16:] file_object = open(uuid_file , 'w') file_object.write( mid ) file_object.close() sockobj = socket.socket(socket.AF_INET,socket.SOCK_STREAM) sockobj.connect((serverHost,serverPort)) def send_message(source_data): try: source_data=base64.b64encode(zlib.compress(source_data)) f=urllib2.urlopen(url = config.get("global","sendurl"),data = urllib.urlencode({'from':mid,'code':source_data}),timeout = 2) return True except Exception,e: print str(e) return True tmp_buf='' while 1: buf = sockobj.recv(1024) if not buf: break if len(buf) != 0: tmp_buf=tmp_buf+buf if buf[len(buf)-1] == '\n': if send_message(tmp_buf) : tmp_buf='' 


J'ai modifié la ligne serverHost = 'localhost' en remplaçant 'localhost' par 'ff-1234' - le nom de réseau de mon Flightaware Flightfeeder et en redémarrant le récepteur VariFlight. Après cela, les données de Flightfeeder sont allées à VariFlight.

Les scripts restants sont la réception des messages ACARS. Peut-être le reste d'une fonctionnalité ou d'une fonction qui sera implémentée à l'avenir. Les scripts fonctionnent avec /root/acarsdec-3.0/acarsdec, qui manque sur ce chemin. ACARSDEC est un décodeur ACARS SDR qui décode des messages, par exemple, à une fréquence de 131,725 ​​MHz. Apparemment, sur la base de la réception de cette fréquence, il n'y a pas de filtres à 1090 MHz à l'entrée du récepteur.


Le système de communication aéronautique d'adresse et de communication (ACARS) est un système de communication numérique utilisé dans l'aviation pour transmettre des messages courts et relativement simples entre un aéronef et des stations au sol, soit par radiocommunication directe, soit par satellite.
Pour plus d'informations sur ACARS, par exemple, cliquez ici .

Le script acars.sh est similaire à task.sh dans son implémentation - il redémarre acarsdec et les scripts get_ip.py et acars.py s'il ne détecte pas le processus nécessaire.

acars.sh
 #!/bin/bash ps -eaf | grep acarsdec | grep -v grep if [ $? -eq 1 ] then /root/acarsdec-3.0/acarsdec -n 127.0.0.1:8888 -o 0 -p -8 -r 0 127.272 126.475 & echo `date "+%G-%m-%d %H:%M:%S"`" acarsdec restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" acarsdec running" echo "------------------------------------------------------------------------" fi ps -eaf | grep get_ip.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/get_ip.py echo `date "+%G-%m-%d %H:%M:%S"`" get_ip restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" get_ip running" echo "------------------------------------------------------------------------" fi ps -eaf | grep acars.py | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then python /root/get_message/acars.py echo `date "+%G-%m-%d %H:%M:%S"`" acars restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" acars running" echo "------------------------------------------------------------------------" fi /usr/sbin/ntpdate cn.pool.ntp.org > /dev/null 


acars.py
 #!/usr/bin/env python import socket, traceback ,time,urllib2,urllib,sys,ConfigParser def send_message(source_data): try: f=urllib2.urlopen(url = config.get("global","sendurl"),data = urllib.urlencode({'from':config.get("global","name"),'code':source_data}),timeout = 10) print "return: "+f.read(); return True except Exception,e: print str(e) return False host = '127.0.0.1' port = 8888 config = ConfigParser.ConfigParser() config.readfp(open(sys.path[0]+'/config.ini',"rb")) s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((host, port)) while 1: try: message, address = s.recvfrom(8192) socket_udp_str='{0} :{1} \n\n'.format(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())),message) send_message(socket_udp_str) except (KeyboardInterrupt, SystemExit): raise except: traceback.print_exc() 


Au travail, cela ressemble à ceci:

 PID TTY STAT TIME COMMAND 20726 ? Ss 0:00 \_ sshd: pi [priv] 20732 ? S 0:00 \_ sshd: pi@pts/0 20734 pts/0 Ss 0:00 \_ -bash 20744 pts/0 R+ 0:00 \_ ps -afx 777 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux 907 ? Sl 737:23 ./dump1090 --net --net-sbs-port 30003 915 ? S 11:11 python -O /root/get_message/send_message.py 

ps -afx complètement
 pi@raspberrypi:~ $ ps -afx PID TTY STAT TIME COMMAND 2 ? S 0:00 [kthreadd] 3 ? S 0:59 \_ [ksoftirqd/0] 5 ? S< 0:00 \_ [kworker/0:0H] 7 ? S 5:28 \_ [rcu_sched] 8 ? S 0:00 \_ [rcu_bh] 9 ? S 0:01 \_ [migration/0] 10 ? S 0:01 \_ [migration/1] 11 ? S 0:05 \_ [ksoftirqd/1] 13 ? S< 0:00 \_ [kworker/1:0H] 14 ? S 0:01 \_ [migration/2] 15 ? S 0:04 \_ [ksoftirqd/2] 17 ? S< 0:00 \_ [kworker/2:0H] 18 ? S 0:01 \_ [migration/3] 19 ? S 0:04 \_ [ksoftirqd/3] 21 ? S< 0:00 \_ [kworker/3:0H] 22 ? S 0:00 \_ [kdevtmpfs] 23 ? S< 0:00 \_ [netns] 24 ? S< 0:00 \_ [perf] 25 ? S 0:00 \_ [khungtaskd] 26 ? S< 0:00 \_ [writeback] 27 ? S< 0:00 \_ [crypto] 28 ? S< 0:00 \_ [bioset] 29 ? S< 0:00 \_ [kblockd] 31 ? S< 0:00 \_ [rpciod] 32 ? S 0:00 \_ [kswapd0] 33 ? S< 0:00 \_ [vmstat] 34 ? S 0:00 \_ [fsnotify_mark] 35 ? S< 0:00 \_ [nfsiod] 44 ? S< 0:00 \_ [kthrotld] 46 ? S< 0:00 \_ [bioset] 47 ? S< 0:00 \_ [bioset] 48 ? S< 0:00 \_ [bioset] 49 ? S< 0:00 \_ [bioset] 50 ? S< 0:00 \_ [bioset] 51 ? S< 0:00 \_ [bioset] 52 ? S< 0:00 \_ [bioset] 53 ? S< 0:00 \_ [bioset] 54 ? S< 0:00 \_ [bioset] 55 ? S< 0:00 \_ [bioset] 56 ? S< 0:00 \_ [bioset] 57 ? S< 0:00 \_ [bioset] 58 ? S< 0:00 \_ [bioset] 59 ? S< 0:00 \_ [bioset] 60 ? S< 0:00 \_ [bioset] 61 ? S< 0:00 \_ [bioset] 62 ? S< 0:00 \_ [bioset] 63 ? S< 0:00 \_ [bioset] 64 ? S< 0:00 \_ [bioset] 65 ? S< 0:00 \_ [bioset] 66 ? S< 0:00 \_ [bioset] 67 ? S< 0:00 \_ [bioset] 68 ? S< 0:00 \_ [bioset] 69 ? S< 0:00 \_ [bioset] 70 ? S< 0:00 \_ [VCHIQ-0] 71 ? S< 0:00 \_ [VCHIQr-0] 72 ? S< 0:00 \_ [VCHIQs-0] 73 ? S< 0:00 \_ [iscsi_eh] 74 ? S< 0:00 \_ [dwc_otg] 75 ? S< 0:00 \_ [DWC Notificatio] 77 ? S 0:00 \_ [irq/92-mmc1] 78 ? S 0:00 \_ [VCHIQka-0] 79 ? S< 0:00 \_ [SMIO] 80 ? S< 0:00 \_ [deferwq] 83 ? S< 0:00 \_ [bioset] 84 ? S 0:11 \_ [mmcqd/0] 87 ? S 0:04 \_ [jbd2/mmcblk0p2-] 88 ? S< 0:00 \_ [ext4-rsv-conver] 89 ? S< 0:00 \_ [ipv6_addrconf] 172 ? S 415:15 \_ [w1_bus_master1] 224 ? S< 0:00 \_ [cfg80211] 227 ? S< 0:00 \_ [brcmf_wq/mmc1:0] 229 ? S 0:00 \_ [brcmf_wdog/mmc1] 493 ? S< 0:00 \_ [kworker/1:1H] 550 ? S< 0:00 \_ [kworker/3:1H] 632 ? S< 0:00 \_ [kworker/u9:0] 633 ? S< 0:00 \_ [hci0] 634 ? S< 0:00 \_ [hci0] 638 ? S< 0:00 \_ [kworker/u9:2] 3856 ? S< 0:00 \_ [kworker/2:1H] 9346 ? S< 0:00 \_ [kworker/0:1H] 15564 ? S 0:00 \_ [kworker/1:0] 17556 ? S 0:00 \_ [kworker/u8:2] 17878 ? S 0:00 \_ [kworker/0:0] 17879 ? S 0:00 \_ [kworker/2:2] 19234 ? S 0:00 \_ [kworker/u8:4] 19566 ? S 0:00 \_ [kworker/3:1] 20143 ? S 0:00 \_ [kworker/2:1] 20259 ? S 0:00 \_ [kworker/3:2] 20352 ? S 0:00 \_ [kworker/0:2] 20416 ? S 0:00 \_ [kworker/1:2] 20600 ? S 0:00 \_ [kworker/3:0] 20601 ? S 0:00 \_ [kworker/2:0] 20605 ? S 0:00 \_ [kworker/u8:0] 20725 ? S 0:00 \_ [kworker/0:1] 1 ? Ss 0:10 /sbin/init 134 ? Ss 1:00 /lib/systemd/systemd-journald 136 ? Ss 0:08 /lib/systemd/systemd-udevd 416 ? Ss 0:09 /usr/sbin/cron -f 426 ? Ss 0:01 /lib/systemd/systemd-logind 429 ? Ss 0:00 avahi-daemon: running [raspberrypi.local] 458 ? S 0:00 \_ avahi-daemon: chroot helper 433 ? Ss 0:00 /usr/bin/dbus-daemon --system --address=systemd: --no 450 ? Ss 0:02 /usr/sbin/thd --daemon --triggers /etc/triggerhappy/t 496 ? Ss 0:03 /sbin/wpa_supplicant -s -B -P /run/wpa_supplicant.wla 498 ? Ssl 0:13 /usr/sbin/rsyslogd -n 636 ? S 0:00 /usr/bin/hciattach /dev/serial1 bcm43xx 921600 noflow 640 ? Ss 0:00 /usr/lib/bluetooth/bluetoothd 729 ? Ss 0:02 /sbin/dhcpcd -q -w 749 ? Ss 0:00 /usr/sbin/sshd -D 20726 ? Ss 0:00 \_ sshd: pi [priv] 20732 ? S 0:00 \_ sshd: pi@pts/0 20734 pts/0 Ss 0:00 \_ -bash 20744 pts/0 R+ 0:00 \_ ps -afx 777 tty1 Ss+ 0:00 /sbin/agetty --noclear tty1 linux 907 ? Sl 737:23 ./dump1090 --net --net-sbs-port 30003 915 ? S 11:11 python -O /root/get_message/send_message.py 


Cela montre que vous pouvez prendre des données de PiAware presque sans contrainte, en fait, seulement transférer des scripts vers le nouveau système. Et si vous avez déjà une station adsb existante - faite maison, Flightradar24, Flightaware, alors le récepteur existant peut être utilisé à votre discrétion pour d'autres objectifs personnels et tâches avec une conscience complètement claire.

Installer VariFlight sur PiAware


Nous transférons les fichiers nécessaires vers le nouveau système de l'ancien. C'est-à-direcontenu du répertoire racine: répertoire
get_message et fichiers install.sh, synctime.sh, task.sh.

Dans le répertoire get_message:
  • acars.py
  • acars.sh
  • config.ini
  • get_ip.py
  • init.sh
  • send_message.py

et le fichier UUID est votre identifiant sur le réseau VariFlight.

Si vous souhaitez commencer à partager des données sans VariFlight Feeder, la première fois que vous exécutez le script, votre UUID est généré. Ce fichier et le nom de l'aéroport le plus proche doivent être envoyés à chengyi (at) variflight.com pour créer votre compte sur le service.

Suivant:
 pi@piaware:~ $ sudo apt-get install -y python ntpdate pi@piaware:~ $ su root@piaware:~# sh task.sh root@piaware:~# crontab -e 

Modification de crontab dans nano par collage
 * * * * * /root/task.sh >/dev/null 2>&1 

Enregistrez le fichier en appuyant sur [Ctrl + O] et fermez [Ctrl + X].
 root@piaware:~# chmod 777 task.sh root@piaware:~# reboot 

Après le redémarrage, nous vérifions la page avec ses statistiques flightadsb.feeyo.com/user/rank
Dans la quatrième colonne, il devrait y avoir une inscription verte en ligne. Et dans la liste de l' aéroport, les panneaux acceptés (troisième colonne - il y a combien de secondes un signal a été reçu de l'avion).

À ce stade, mon projet a «pendu» indéfiniment, car ici, je voulais écrire comment exécuter un script sur le routeur avec openwrt et ModeSMixer pour distribuer des données aux services et ainsi éteindre ce récepteur et l'appliquer à d'autres fins. Mais je ne m'attends toujours pas à du temps libre et j'ai décidé de publier tel quel. Peut-être que quelqu'un veut commander un récepteur gratuit et cet article sera utile.

ModeSMixer


Un récepteur peut distribuer des données à plusieurs services et le programme ModeSMixer est utilisé pour cela.

ModeSMixer est une application console pour combiner et relayer des flux avec des données Mode-S dans différents formats. Exemple d'utilisation:


Le programme est conçu pour combiner et relayer différents formats de flux de données ModeS. Le programme n'a pas de paramètres par défaut. Tout est défini par des paramètres.

Le paramètre --inConnect spécifie les adresses et les ports à partir desquels les données sont reçues. Et le paramètre --outServer définit le format et le port pour les données relayées. Un exemple dans l'image ressemblera à ceci:
 ./modesmixer2 --inConnect 192.168.0.105:30005 --inConnect 127.0.0.1:30005 --outServer sbs10001:10001 --outServer beast:31001 --globes 32000:tablename:home --location XX.XXXXX:YY.YYYYY --web 8765 & 

Le paramètre --location détermine la latitude et la longitude de l'emplacement d'installation de la station, et le paramètre --web détermine le port sur lequel l'interface Web du programme fonctionnera. En savoir plus sur le programme ici .

Après avoir mis en place la distribution de plusieurs services, le propriétaire de la station bénéficie d'un abonnement spécial sur chaque service et d'un accès aux informations non publiques et aux archives de vol pendant une certaine période.

Dans le cas de l'utilisation de PiAware, les données sont déjà envoyées à FlightAware et il ne reste plus qu'à collecter ces données à l'aide de modesmixer2. Et dans le cas de Variflight, vous devez obtenir des données BaseStation sur un port libre, par exemple, 10001. Le paramètre ressemblera à ceci --outServer msg: 10001. Si nécessaire, vous pouvez ajouter le port 10002 pour le programme VirtualRadar: --outServer beast: 10002
 ./modesmixer2 --inConnect localhost:30005 --inConnect localhost:30105 --outServer msg:10001 --outServer beast:10002 --location <>:<> --web 8765 & 

Pour que cela démarre et redémarre automatiquement, vous devez modifier task.sh, en ajoutant:
 ps -eaf | grep modesmixer2 | grep -v grep # if not found - equals to 1, start it if [ $? -eq 1 ] then ./modesmixer2 --inConnect localhost:30005 --inConnect localhost:30105 --outServer msg:10001 --location <>:<> --web 8765 & echo `date "+%G-%m-%d %H:%M:%S"`" modesmixer2 restart" echo "------------------------------------------------------------------------" else echo `date "+%G-%m-%d %H:%M:%S"`" modesmixer2 running" echo "------------------------------------------------------------------------" fi 

Enfin, modifiez le script get_message / send_message.py, en spécifiant un nouveau port de données:
 serverHost = 'localhost' serverPort = 10001 


Pendant ce temps,


alors que cet article était en cours de rédaction, des informations sont parvenues de Chine concernant ces services. En novembre 2018, les autorités chinoises ont commencé à éteindre les récepteurs ADSB des services étrangers. Cela peut être vu dans les statistiques publiques des stations Flightaware en Chine:



La nouvelle est que les amateurs de repérage radar chinois ont déclaré avoir été appelés par des représentants des autorités chinoises et ont été visités par la police, qui "très gentille et polie" leur a demandé de cesser d'envoyer des données ADS-B à l'étranger. services, ce qui, apparemment, "met en danger la sécurité nationale et la souveraineté de la Chine".

Certains ont affirmé avoir reçu un appel, même s'ils n'avaient pas reçu de récepteur de FlightRadar24 et FlightAware. Ces événements ont provoqué un émoi parmi les passionnés, et beaucoup d'entre eux ont cessé de transmettre des données ADS-B. FlightRadar24 est connu pour avoir tenté d'anonymiser les stations d'utilisateurs en Chine. On ne sait pas encore à quel point cela est spectaculaire.

Avis aux autorités chinoises en anglais:


«Cela met en danger la sécurité nationale et la souveraineté de la Chine», le fait que ces services permettent la localisation d'avions militaires chinois (américains, européens et autres que les pays de l'ex-URSS). Par exemple, la trajectoire hebdomadaire de l'UAV de reconnaissance stratégique américain au-dessus des eaux internationales à une altitude de 16 km:

image

Il existe deux systèmes radar secondaires dans le monde, des États-Unis et de l'URSS. Par conséquent, ces récepteurs et services ne peuvent pas montrer où se trouvent la plupart des avions, hélicoptères «soviétiques» à moins qu'ils ne soient équipés d'un transpondeur radar «américain», qui n'est nécessaire que pour les vols dans l'espace aérien, par exemple aux États-Unis ou dans l'UE. Par conséquent, vous pouvez voir quelque chose d'intéressant sur le territoire de la Fédération de Russie dans les zones frontalières, de préférence en bord de mer. Par exemple, l'officier du renseignement américain mentionné ci-dessus est remarquablement visible depuis Krasnodar. En raison de cette situation côtière du récepteur, le service PlaneRadar susmentionné entre périodiquement dans l'actualité des médias russes.


PS VariFlight ADS-B lance la version anglaise - flightadsb.variflight.com

Source: https://habr.com/ru/post/fr423989/


All Articles