2011-01-18 4 views
2

Ce que la meilleure méthode serait d'utiliser Django pour créer une application similaire à dire OpenNMS ou tout autre outil de gestion de réseau comparable?données Django journalisation frontal - phidgets

L'application Django doit être constamment dispositifs vote 1 ou plus, chaque dispositif ayant une ou plusieurs entrées analogiques et numériques. Fondamentalement, comment intégrer les fonctions d'interrogation nécessaires dans une application django, de sorte que lorsque le (s) capteur (s) de périphérique est interrogé, la valeur résultante est stockée dans l'ORM de Django pour que l'utilisateur puisse ensuite tirer des graphiques, des diagrammes, etc. des données qu'il enregistre?

Django est-ce pas la base juste pour quelque chose comme ça? Les périphériques embarqués que j'interroge ont des API python pour définir des gestionnaires d'événements ou simplement interroger les objets en cours de lecture si nécessaire. (http://www.phidgets.com)

L'objectif final est que ce site Django réside sur le PhidgetSBC et peut ensuite être facilement accessible et contrôlé via le réseau. L'interrogation et le stockage des valeurs des capteurs doivent être effectués 24 heures sur 24, 7 jours sur 7, sauf si l'internaute les a spécifiquement désactivés via une "zone d'administration de périphérique" sur le site Django par exemple.

Je ne suis pas inquiet au sujet de la cartographie, le contrôle des dispositifs sur les broches de sortie, etc à ce moment que l'obtention des données dans la base de données est fiable priorité absolue. Je ne pense pas que le paquet python que j'ai créé va bien se porter sur Django, donc je préférerais partir de zéro et le démarrer correctement.

Merci

Répondre

2

Comment gérez-vous la connexion dépend vraiment de la façon dont les données que vous souhaitez présenter les données. Cependant, à moins que vous ne soyez intéressé que par un affichage en temps réel (c'est-à-dire sans graphique), tout code responsable de la journalisation devra s'exécuter en dehors du cycle requête/réponse HTTP, et donc hors de Django.

Probablement l'approche la plus directe serait d'écrire un script python séparé qui s'exécuterait en arrière-plan, ce qui permettrait d'interroger périodiquement l'API phidget et de vider les données dans la base de données. Un problème majeur potentiel avec cette approche est que la configuration du capteur est essentiellement codée en dur - si vous souhaitez ajouter ou supprimer un capteur, vous devrez changer le script python. Cela peut ou non être important pour votre application.

Afin de mieux intégrer les données récupérées par le script dans Django, vous pouvez créer quelques modèles comme celui-ci:

class Device(models.Model): 
    """A sensor""" 
    name = models.CharField(max_length=20) 
    ... 

class DataPoint(models.Model): 
    value = models.DecimalField(decimal_places=2, max_digits=10) # whatever is appropriate 
    timestamp = models.DateTimeField() 
    device = models.ForiegnKey(Device) 

Lorsque vous exécutez syncdb, vous pouvez voir les noms de table qui seront créés. Il devrait être quelque chose comme:

appname_device 
appname_data_point 

Votre script de fond alors créer des enregistrements dans la table appname_data_point, qui serait alors accessible via le Django ORM.

+0

Merci un bouquet ... Mon plus grand point de confusion était avec que je peux apporter le vote dans Django ou non .. pas deviner! Concernant le codage en dur, qu'en est-il du fait que le code python externe vérifie périodiquement une certaine table qui stockerait les informations de configuration? Serait-il possible de créer un gestionnaire d'événements pour cette table afin que le script externe puisse connecter ce gestionnaire d'événements? – Zero0ne

+0

Il y a probablement beaucoup de façons différentes de faire quelque chose comme ça. Par exemple, si la table de configuration a été implémentée en utilisant des modèles Django, vous pouvez écrire quelque chose dans la méthode save du modèle (ou utiliser un écouteur) pour appeler une sorte de fonction 'update' pour le processus en arrière-plan. –

Questions connexes