Cloud API firmware 2.x.x
See original GitHub issueHi guys, I have almost everything ready to make the Cloud API possible:
- cloud discovery
- cloud aws login
- suscribe to topics in the cloud to receive state updates
- make changes in the state to set preferences ( schedule, bust, etc)
But i dont found the correct topic
and message
content to send basic commands like start
or stop
.
Anybody sniff that data? or has that data?
My sniff data is weired and malformed, i dont know if my sslsplit is showingme the info in the correct encoding. When I send a command with my phone over the cloud I see some bytes in the comunication but no one string like topic o json message.
can anybody help?
here is the working snippet:
const AWSIoTData = require('aws-iot-device-sdk');
const AWS = require('aws-sdk');
const request = require('request-promise');
// install with: npm install aws-iot-device-sdk aws-sdk request-promise request
const ROBOT_BLID = ''; // same as local api
const ROBOT_PASSWORD = ''; // same as local api
const APP_ID = ''; // like IOS-12345678-1234-1234-1234-123456789098
function cloudDiscovery () {
var requestOptions = {
'method': 'GET',
'uri': `https://disc-prod.iot.irobotapi.com/v1/robot/discover/${ROBOT_BLID}`,
'json': true
};
return request(requestOptions);
}
function cloudLogin () {
return cloudDiscovery().then(function (discoveryData) {
var postData = {
'associations': {
'0': {
'robot_id': ROBOT_BLID,
'deleted': false,
'password': ROBOT_PASSWORD
}
},
'app_id': APP_ID
};
var requestOptions = {
'method': 'POST',
'headers': {
'Content-Type': 'application/json',
'User-Agent': 'aspen/1.9.1.184.1 CFNetwork/808.2.16 Darwin/16.3.0'
},
'uri': `${discoveryData.httpBase}/v1/login`,
'body': postData,
'json': true
};
return request(requestOptions).then((rawLoginResponse) => {
return {login: rawLoginResponse.associations['0'], credentials: rawLoginResponse.credentials, discovery: discoveryData};
});
});
}
function initMQTT (amazonData) {
var awsConfiguration = {
poolId: amazonData.credentials.CognitoId,
region: amazonData.discovery.awsRegion
};
var AWSConfiguration = awsConfiguration;
var clientId = ROBOT_BLID + '-' + (Math.floor((Math.random() * 100000) + 1));
AWS.config.region = AWSConfiguration.region;
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: AWSConfiguration.poolId
});
const mqttClient = AWSIoTData.device({
region: AWS.config.region,
clientId: clientId,
protocol: 'wss',
maximumReconnectTimeMs: 8000,
debug: true,
accessKeyId: amazonData.credentials.AccessKeyId,
secretKey: amazonData.credentials.SecretKey,
sessionToken: amazonData.credentials.SessionToken
});
mqttClient.on('connect', function (e) {
console.log('connect!', e);
mqttClient.subscribe('$aws/things/' + ROBOT_BLID + '/shadow/#'); // all subtopics
// const cmd = {'state': {'desired': {'cleanSchedule': {'cycle': ['none', 'none', 'none', 'none', 'none', 'none', 'none'], 'h': [17, 10, 10, 12, 10, 13, 17], 'm': [0, 30, 30, 0, 30, 30, 0]}}}};
// mqttClient.publish('$aws/things/' + ROBOT_BLID + '/shadow/update', JSON.stringify(cmd));
});
mqttClient.on('reconnect', function () {
console.log('reconnect!');
});
mqttClient.on('message', function (t, m) {
console.log('message:');
console.log('topic:', t);
console.log(m.toString());
});
mqttClient.on('delta', function (m) {
console.log('delta:');
console.log(m);
});
mqttClient.on('status', function (m) {
console.log('status:');
console.log(m);
});
mqttClient.on('data', function (m) {
console.log('data:');
console.log(m);
});
mqttClient.on('error', function (e) {
console.log('error:');
console.log(e);
});
mqttClient.on('packetreceive', function (m) {
console.log('packetreceive:');
console.log(m);
});
}
cloudLogin().then((credentialData) => {
console.log(credentialData);
initMQTT(credentialData);
}).catch(console.log);
Issue Analytics
- State:
- Created 7 years ago
- Reactions:1
- Comments:57 (23 by maintainers)
Top Results From Across the Web
Cloud API reference | Reference Documentation - Particle docs
Control and manage Particle IoT devices from the Internet with a REST API.
Read more >UniFi Cloud Key Firmware 2.0.24 | Ubiquiti Community
We are very excited to announce UniFi OS for the Cloud Key Gen2 and Cloud Key Gen2 Plus. This update contains a major...
Read more >Upgrade ExtraHop firmware through the REST API with ...
You can automate upgrades to the firmware on your appliances through the ExtraHop REST API. You can also view available firmware versions and...
Read more >koalazak/rest980: REST interface to control your ... - GitHub
Cloud (only for firmware 1.6.x). Use GET in all info endpoints without query params: /api/cloud/info/status; / ...
Read more >checking firmware compliance with REST API - HPE Community
Solved: The REST API for checking firmware compliance says to supply: ... --header "X-API-Version: ${currentVersion}" \ --output firmware ...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
you promise that i can not get a loop of start AND stop commands now? :p
oh crap, that works but the robot now is receiving the start command every second :p. let me kwno if you can stop it :p