Jump to content

This is the support site for Andrews & Arnold Ltd, a UK Internet provider. Information on these pages is generally for our customers but may be useful to others, enjoy!

CHAOS: Difference between revisions

1,165 bytes removed ,  22 August 2019
m
mNo edit summary
 
(23 intermediate revisions by 3 users not shown)
'''CHAOS''' is our API - it's still work in progress, and further features will be added. We'll add to this section of the wiki with examples.
 
==CHAOS Version 1==
Information: http://aa.net.uk/support-chaos.html
 
'''Disabled'''
 
Version 1 is no longer available for use. Use version 2 instead.
Other (3rd party) uses of CHAOS:
*https://github.com/JamesBelchamber/aaisp-tools
 
==CHAOS Version 2.x==
 
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:-
==Getting CQM Graphs==
*Access information about an existing service, eg your remaining quota
*Adjust settings on an existing service
*Obtain usage data relating to an existing service
*Obtain sync rates of a DSL line
*Obtain VoIP call rate card
*Order a cease of an existing service
*Order a change to an existing service
*Check availability of new services
*Order a new service, including creating a new account
*etc.
 
The control systems cover a wide range of services, including broadband, ethernet, telephony, domains, email, mobile SIMs, and so on.
This is a quick example of getting cqm graphs from CHAOS.
 
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.
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.
 
===Further Information===
CHAOS is currently limited to only showing DSL graphs (eg, not SIMs) and only for lines on the login, ie a 'Manager' or 'Group' login.
Manual: http://aa.net.uk/pdf/CHAOS2.pdf
 
==Uses==
HTML:
Here are some projects that are using the CHAOS API:
<source lang=html5>
*'''Munin Plugin by Nat Morris'''
<!DOCTYPE html>
**[https://github.com/natm/munin-plugins-aaisp Code on Github], [https://munin.hw.esgob.com/broadband-day.html Example]
<head lang='en'>
**Just need to provide one account & password, it will automatically graph multiple lines and produce combined graphs etc.
<title>Graphs</title>
*'''MQTT Service by Nat Morris'''
<script type="text/javascript" src="jquery-1.8.3.min.js"></script>
**[https://github.com/natm/aaisp-to-mqtt Code on Github]
<script src='chaosgraphs.js'></script>
** 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].
</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>
 
Javascript (chaosgraphs.js), you'll also need jquery:
 
[[Category:Control Pages]]
<source lang=javascript>
//Function to get service data from chaos using the "info" command
function getgraphs(username,password)
{
$("#results").html("<p><img src='images/loading-small.gif' alt='Loading' /></p>"); //Show a loading image while wai
ting for chaos
if(!username) { var username = $("input[type='text'][name='username']").val(); }
if(!password) { var password = $("input[type='password'][name='password']").val(); }
//AJAX request for "info" command
$.ajax({
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
}
});
}
 
$(document).ready(function() {
//Run the getgraphs() function when the form is submitted
$("#login").submit(function(e) {
e.preventDefault();
getgraphs();
//Or you could run getgraphs with a static username and password e.g.
//getgraphs('myusername','mypassword');
});
});
</source>
autoreview, Bureaucrats, editor, Interface administrators, reviewer, Administrators
12,264

edits