Coder Social home page Coder Social logo

kelixin / artemis Goto Github PK

View Code? Open in Web Editor NEW

This project forked from stfc/artemis

0.0 2.0 0.0 775 KB

Almost Real-Time Environmental Monitoring & Information System

License: GNU General Public License v3.0

Python 40.61% Shell 2.25% PHP 32.60% CSS 5.43% JavaScript 19.11%

artemis's Introduction

ARTEMIS

Almost Real-Time Environmental Monitoring & Information System

Getting Started

If you've already got some environmental sensors, great! You're halfway there.

Check Supported Devices to see if your equipment is known to work.

If not, for most devices a plugin should not be difficult to write, see Plugin Development

If you are starting from scratch either buy some Supported Devices or take a look at Building Sensors.

Prerequisites

  • httpd
  • php
  • python 2.6+
  • python-rrdtool
  • rrdtool
  • moment.js 1.7.2+
  • python-sqlalchemy
  • python-argparse

Installation

  1. Run setup.sh to initialise config files and storage directories.
  2. Edit artemis.conf to your liking.
  3. Run ./artemis_collect.py to initialise the data store.
  4. Add at least one node using artemis_cli.py add_node.
  5. Run ./artemis_collect.py to detect and collect data from probes.
  6. Update positions of probes using artemis_cli.py update_probe.
  7. If necessary, modify artemis.cronand copy to /etc/cron.d/.

Architecture

{ sensors }->[ thread ]-.    [ crond ]
{ sensors }->[ thread ]-|        :
{ sensors }->[ thread ]-|->[ collector ]->/ json /->[ javascript ]->( display )
{ sensors }->[ thread ]-|        |
{ sensors }->[ thread ]-'  ( rrd files )

Supported Devices

This is not an exhaustive list, but devices listed have at least been tested once.

Some devices may be supported but not yet listed, check the git repository.

ManufacturerModelWorksProtocolModule
SwiftTechCM-2XMLxml_env_swift
SwiftTechCM-2SNMPsnmp_env_swift
APCAP7953SNMPsnmp_pdu_apc
JacartaUnknown?SNMPsnmp_env_jacarta

Plugin Development

Plugins for different sensors are implemented as individual modules in plugins/.

Each module is expected to define a class of the same name that subclasses node from base.py and as such must define at least one method (fetch()).

class node(object):
    def __init__(self, ip):
        self.ip = ip
    def fetch(self):
        pass

For plugins implementing access to SNMP devices, base.py also provides the convenience function getMIB for fetching the contents of MIB trees by walking the tree from a defined point.

getMIB(ip, mib, community = "public")

In addition base.py provides the definitions for unit symbols and a lookup table for 1-Wire device families.

UNIT_TEMPERATURE
UNIT_CURRENT
UNIT_AIRFLOW
UNIT_HUMIDITY

FAMILY_1WIRE[]

Additional unit definitions and 1-wire families should be added as needed.

Reference Platform

1-Wire Sensors

Maxim 1-Wire sensors are low-cost, readily available and accurate devices which can easily be interfaced to a computer with USB or other interfaces.

  • DS1822
    • Temperature
    • ±2C
    • 9-12 bit
  • DS18B20
    • Temperature
    • ±0.5C
    • 9-12 bit
  • DS18S20
    • Temperature
    • ±0.5C
    • 9 bit

Base Units

There is currently an ongoing project to develop a low-cost base unit around the Raspberry Pi which when completed will be our recommended base unit.

For the time being, other good options are low cost development boards and systems based around a VIA or Atom CPU, many of which are available for under £100. Or existing commercial units which cost in the region of £500.

artemis's People

Contributors

jrha avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.