CHAOS: Difference between revisions
Appearance
Content deleted Content added
mNo edit summary |
|||
| (30 intermediate revisions by 3 users not shown) | |||
| Line 1: | Line 1: | ||
'''CHAOS''' is our API - it's still work in progress, and further features will be added. |
|||
=Getting CQM Graphs= |
|||
==CHAOS Version 1== |
|||
This is a quick example of getting cqm graphs from CHAOS. |
|||
'''Disabled''' |
|||
In short, the Info command is used to get the graph URLs. The HTML provides a form to enter the credentials or you can edit the javascript to hardcode these. |
|||
Version 1 is no longer available for use. Use version 2 instead. |
|||
HTML: |
|||
<source> |
|||
<!DOCTYPE html> |
|||
<head lang='en'> |
|||
<title>Graphs</title> |
|||
<script type="text/javascript" src="jquery-1.8.3.min.js"></script> |
|||
<script src='chaosgraphs.js'></script> |
|||
</head> |
|||
<body> |
|||
<form id='login'> |
|||
<input type='text' name='username' placeholder='username' autofocus /> |
|||
<input type='password' name='password' placeholder='password' /> |
|||
<input type='submit' value='Login' /> |
|||
</form> |
|||
<hr /> |
|||
<div id='results'></div> |
|||
</body> |
|||
</html> |
|||
</source> |
|||
==CHAOS Version 2.x== |
|||
Javascript: |
|||
CHAOS is an application interface (API) for machine to machine interaction with our control and ordering systems. It provides a means to perform the following key operations:- |
|||
<source> |
|||
*Access information about an existing service, eg your remaining quota |
|||
//Function to get service data from chaos using the "info" command |
|||
*Adjust settings on an existing service |
|||
function getgraphs(username,password) |
|||
*Obtain usage data relating to an existing service |
|||
{ |
|||
*Obtain sync rates of a DSL line |
|||
$("#results").html("<p><img src='images/loading-small.gif' alt='Loading' /></p>"); //Show a loading image while wai |
|||
*Obtain VoIP call rate card |
|||
ting for chaos |
|||
*Order a cease of an existing service |
|||
if(!username) { var username = $("input[type='text'][name='username']").val(); } |
|||
*Order a change to an existing service |
|||
if(!password) { var password = $("input[type='password'][name='password']").val(); } |
|||
*Check availability of new services |
|||
//AJAX request for "info" command |
|||
*Order a new service, including creating a new account |
|||
$.ajax({ |
|||
*etc. |
|||
type: "POST", |
|||
url: "https://chaos.aa.net.uk/info", |
|||
xhrFields: { withCredentials: true }, |
|||
contentType: 'application/json', |
|||
data: JSON.stringify({username:username,password:password}), |
|||
success: function(data) { |
|||
var chaos = data; |
|||
var html = ""; |
|||
console.log(chaos); |
|||
if(chaos.error != undefined) { |
|||
//If there is an error display it |
|||
html+="<p class='error'>"+chaos.error+"</p>"; |
|||
} |
|||
else { |
|||
//If there is no error, loop through the response and create graphs |
|||
for(var i = 0; i < chaos.login.length; i++) { |
|||
if(chaos.login[i].broadband_count != 0) { |
|||
for(var j = 0; j < chaos.login[i].broadband.length; j++) { |
|||
var bb = chaos.login[i].broadband[j]; |
|||
html+=bb.circuit+"<br />"; |
|||
html+="<img src='"+bb.cqm_png.replace(/http:/g,"https:")+"' alt='CQM graph "+j+"' /><hr />"; |
|||
} |
|||
} |
|||
else { html+="No lines"; } |
|||
} |
|||
} |
|||
$("#results").html(html); |
|||
//Put the results into a div |
|||
} |
|||
}); |
|||
} |
|||
The control systems cover a wide range of services, including broadband, ethernet, telephony, domains, email, mobile SIMs, and so on. |
|||
$(document).ready(function() { |
|||
//Run the getgraphs() function when the form is submitted |
|||
Whilst CHAOS may initially not provide access to all of these services, it is intended to be a general platform that can be extended over time to provide a comprehensive machine to machine interface to all of our services. |
|||
$("#login").submit(function(e) { |
|||
e.preventDefault(); |
|||
===Further Information=== |
|||
getgraphs(); |
|||
Manual: http://aa.net.uk/pdf/CHAOS2.pdf |
|||
//Or you could run getgraphs with a static username and password e.g. |
|||
//getgraphs('myusername','mypassword'); |
|||
==Uses== |
|||
}); |
|||
Here are some projects that are using the CHAOS API: |
|||
}); |
|||
*'''Munin Plugin by Nat Morris''' |
|||
</source> |
|||
**[https://github.com/natm/munin-plugins-aaisp Code on Github], [https://munin.hw.esgob.com/broadband-day.html Example] |
|||
**Just need to provide one account & password, it will automatically graph multiple lines and produce combined graphs etc. |
|||
*'''MQTT Service by Nat Morris''' |
|||
**[https://github.com/natm/aaisp-to-mqtt Code on Github] |
|||
** Publish circuit statistics to an [https://en.wikipedia.org/wiki/MQTT MQTT] broker, makes it very easy to integrate with home automation projects such as [https://home-assistant.io/ Home Assistant] and [http://www.openhab.org/ openHAB]. |
|||
[[Category:Control Pages]] |
|||