Hallo zusammen, hallo @Zefau ,
ich habe mal ein wenig Recherche betrieben. Ich finde Deinen Adapter super und würde gerne die Node _runCommand benutzen.
Jedoch tut sich beim Benutzen dieser so garnichts.
So wie ich Deinen Code verstehe (roomba.js) Zeile 151
// run command
else if (action == '_runCommand' && state.ack !== true)
{
let command = { command: state.val, time: Date.now() / 1000 | 0, initiator: 'localApp' };
robot.publish('cmd', JSON.stringify(command), () => {
adapter.log.info('Ran command ' + state.val + '!');
});
}
läßt Du dort nur ein Kommando wir 'start' o.ä., ohne Parameter zu, da der eigentliche Commandstring erst via stringify erzeugt wird.
Also möchte ich ein Command wie (btw: Dieses Command funktioniert wenn ich eine Verbindung zum s9 via MQTT Explorer aufbaue)
{
"command": "start",
"ordered": 1,
"params": {
"carpetBoost": false,
"noAutoPasses": false,
"twoPass": false,
"vacHigh": false
},
"pmap_id": "???",
"regions": [
{
"region_id": "12",
"type": "rid"
}
],
"user_pmapv_id": "???"
}
los schicken, wird folgendes in die Methode publish geschickt:
{ command: {
"command": "start",
"ordered": 1,
"params": {
"carpetBoost": false,
"noAutoPasses": false,
"twoPass": false,
"vacHigh": false
},
"pmap_id": "???",
"regions": [
{
"region_id": "12",
"type": "rid"
}
],
"user_pmapv_id": "???"
}, time: Date.now() / 1000 | 0, initiator: 'localApp' }
... und das dürfte einen Fehler produzieren.
Ich möchte Dir nicht vorgreifen, jedoch sollte der case für _runCommand nicht so aussehen ?
// run command
else if (action == '_runCommand' && state.ack !== true)
{
robot.publish('cmd', state.val, () => {
adapter.log.info('Ran command ' + state.val + '!');
});
}
Edit: Ich habe gerade meine lokale roomba.js dahingehend geändert. Ich denke der Case wird nicht angesprungen..
// run command
else if (action == '_runCommand' && state.ack !== true)
{
adapter.log.info('_runCommand modify');
robot.publish('cmd', state.val, () => {
adapter.log.info('Ran command ' + state.val + '!');
});
}
Ich kenne die Internas von IOBroker nicht und dachte es wäre die Stelle im Code die ausgeführt wird sobald ich den Inhalt der Node 'roomba.0.commands._runCommand' verändere. Ich sehe auch im Log nicht den erwarteten Output '_runCommand modify'
Liege ich damit falsch ?
Viele Grüße
Kai