Antworten
Feb 21, 2018 - 14:04
Mann kann alle befehle auch als json senden.
Wenn du das tool firebug installierst und das alles über web oberfläche machbar ist, kannst du im firebug die json befehle herausfinden.
Diese cli befehle sind telnet kommandos.
Über http befehle kannst du noch hier lesen:
http://tutoriels.domotique-store.fr/c...
hier noch ein script welches du probieren kannst, wenn automation manager vorhanden:
var net = require('net');
var client = new net.Socket();
client.connect(9090, '192.168.0.11', function() {
console.log('Connected');
client.write('version ?');
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
Feb 22, 2018 - 10:08
im gateway zwei variablen anlegen
mit namen variable1
variable2
vom typ string
danndieses script:
var net = require('net');
var n ='\n';
var sync = 'sync'; //befehl
getDeviceStatus(
"AIO GATEWAY V5+ (EA)",
"variable1",
{"value":"state"},
function(err, status) {
if(!err) {
var command1 = status;
getDeviceStatus(
"AIO GATEWAY V5+ (EA)",
"variable2",
{"value":"state"},
function(err, status1) {
if(!err) {
var command2 = status1;
var client = new net.Socket();
client.connect(9090, '192.168.1.20', function() {
console.log('Connected');
client.write(command1 + sync + command2 + n);
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
}
err && console.error(err.message);
//console.log(status);
}
);
err && console.error(err.message);
//console.log(status1);
}
}
);
dort wo das steht"AIO GATEWAY V5+ (EA)",
deinen raum wählen
Von
das kannst du machen im automation manager unter script, fügst du ein den code und speichers ab unter einem namen, dann die play taste klicken in dem script editor....kommt da eine antwort, wenn ja poste sie hier...
Von
wenn dein server einen login braucht dann ersetze das script erstmal so in dieser zeile:
client.write('login user password');
user und passwort mit deinen ersetzen
Von
Hi,
1. Web Oberfläche = Ja kann mann, aber A ist die auf dem Tablet oder Handy eher nicht so toll, weil alles sehr klein dargestellt wird. Ebenso wollte ich grundsätzlich die Art wie synchronisationsszenen zusammengelickt werden verbessen.
2. Wo kann man json befehle senden ? Aus der Remote oder aus dem Gatway oder dem Automation manager? Ich schau mir firebug mal an.
3. CLI = Ja ich hab das auch rausgefunden. Daher kann man die nur über kommandozeile auslösen und das lässt sich mit AIO nicht verheiraten, oder hab ich was übersehen?
4. HTTP bin ich grade dran, die ganzen HTTP dokus beschreiban aber keinen sync, ich habe dennoch einen sync rausgefunden und teste das auch, scheint aber umständlich.
5 script ? sorry für die frage, ist das java ? script gibt zurück "connected"
danke Dir
Von
javascript ist das...
connected für was, welches script login user passwort
oder kommt da nichts mehr, da sollte noch mehr kommen
Von
1. du musst das über browser machen mit forebug, dann sieht man die befehle welche geschickt werden
wenn man diehat kann man solches json befehl aus einem script senden, also dann ein button mit html befehl, dann einen task, welches auf dieses befehl reagiert und in einer aktion ein script welches dein vorhaben steuert.
3. dann könnte man über script sowas senden, hast du ja auch, da muss aber mehr zurückkommen als connected...
Von
ist dein server mit passwort geschützt muss du in die zeile login user passwort schicken, siehe oben
Von
12:52:23Skript Neues Skript hat gestartet.
12:52:23Connected
mehr kommt da nicht in der script debug ausgabe.
Von
und jetzt?
var net = require('net');
var client = new net.Socket();
client.connect(9090, '192.168.0.11', function() {
console.log('Connected');
client.write('version ? \n');
});
client.on('data', function(data) {
console.log('Received: ' + data);
client.destroy();
});
client.on('close', function() {
console.log('Connection closed');
});
Von
13:24:44Skript Neues Skript hat gestartet.
13:24:45Connected
13:24:45Received: version 7.7.6
13:24:45Connection closed
13:24:45Skript Neues Skript hat geendet.
Von
wenn es jetzt eine antwort gibt, kannst du dann die cli befehle testen....am besten du machst es davor mit telnet, wenn der befehl das macht, was du willst, dann baust du es in das script rein, nach dieser zeile
client.write('version ? \n');
dann einfach noch ne zeile einfügen:
client.write('player count ? \n');
immer das script danach speichern
versuche es, normalerweise muss es gehen
Von
so ich hab den firebug zum laufen bekommen. was genau kann ich daraus posten damit man schlau draus wird? :-)
Von
das ist kompliziert :)
teste das script was ich gepostet habe
Von
zuerst muss da jetutz eine antwort kommen, mit der version des servers, dann kann man weiter machen...
Von
sieh oben :-)
Von
also geht das...
jetzt probiere mit anderen befehlen...
Von
zur info aus firebug: einen player mit einem anderen synchronisiert (aus dem reiter netzwerk - java script - json)
method
"slim.request"
params
["b8:27:eb:5e:4a:9c", ["sync", "b8:27:eb:fe:53:d9"]]
0
"b8:27:eb:5e:4a:9c"
1
["sync", "b8:27:eb:fe:53:d9"]
0
"sync"
1
"b8:27:eb:fe:53:d9"
result
Object {}
id
1
method
"slim.request"
params
["b8:27:eb:fe:53:d9", ["status", "-", 1, "tags:uB"]]
0
"b8:27:eb:fe:53:d9"
1
["status", "-", 1, "tags:uB"]
0
"status"
1
"-"
2
1
3
"tags:uB"
result
Object { player_ip="192.168.0.22:59712", power=1, signalstrength=0, mehr...}
player_ip
"192.168.0.22:59712"
power
1
signalstrength
0
sync_master
"b8:27:eb:5e:4a:9c"
player_name
"Ankleide_pCP"
mode
"stop"
player_connected
1
mixer volume
50
playlist repeat
0
sync_slaves
"b8:27:eb:fe:53:d9"
playlist mode
"off"
playlist shuffle
0
seq_no
0
playlist_tracks
0
id
1
result
Object { power=1, player_ip="192.168.0.22:59712", mode="stop", mehr...}
power
1
player_ip
"192.168.0.22:59712"
mode
"stop"
sync_master
"b8:27:eb:5e:4a:9c"
player_name
"Ankleide_pCP"
signalstrength
0
mixer volume
50
player_connected
1
playlist_tracks
0
seq_no
0
playlist shuffle
0
playlist mode
"off"
sync_slaves
"b8:27:eb:fe:53:d9"
playlist repeat
0
id
1
params
["b8:27:eb:fe:53:d9", ["status", "-", 1, "tags:uB"]]
0
"b8:27:eb:fe:53:d9"
1
["status", "-", 1, "tags:uB"]
0
"status"
1
"-"
2
1
3
"tags:uB"
method
"slim.request"
Von
ich ? an welcher stelle und welche befehle.... ich habe versucht die CLI sprache zu verstehen und HTTP Befehle zum sync einigermaßen herausgefunden. keine ahnung wie ich hier java befehle benutzen soll?! da bin ich aufgeschmissen ;-)
Von
du benutzst schon javascript befehle
teste das einfach, ich bin kein hellseher und diesen server habe ich auch nicht
Von
lese das hier:
Request: "04:20:00:12:23:45 sync 1"
Response: "04:20:00:12:23:45 sync 1"
Request: "04:20:00:12:23:45 sync ?"
Response: "04:20:00:12:23:45 sync 04:20:00:12:23:21"
Request: "04:20:00:12:23:45 sync -"
Response: "04:20:00:12:23:45 sync -"
syncgroups ?
The "syncgroups" query returns a comma separated list of sync groups members (IDs and names).
Examples:
Request: "syncgroups ?"
Response: "syncgroups sync_members:04:20:00:12:23:45,04:20:00:12:34:56 sync_member_names:Living%20Room,Kitchen"
Von
04:20:00:12:23:45 sync ?
das ist ein befehl
wenn du das änderst, im script mit deiner adresse des players
client.write('04:20:00:12:23:45 sync ? \n');
kommt was raus?
Von
mit json wird es auch nicht einfacher, denn dafür brauchst du wieder ein script
Von
oben sollte es auch mit ip adresse gehen
client.write('192.168.1.20 sync ? \n');
Von
also jetzt kommen wir schon weiter :-)
ich hatte verstanden dein CODE ist java und was ich habe ist unter anderem CLI (die doku kenne ich und hab sie bisher auch fast ganz verstanden, mit kleinen ausnahmen :-) )
ich wusste nicht das die CLI befehle zu Java gehören oder da verstanden werden.
13:54:56Skript Neues Skript hat gestartet.
13:54:57Connected
13:54:57Received: syncgroups sync_members%3Ab8%3A27%3Aeb%3A81%3A36%3A50%2Cb8%3A27%3Aeb%3Afe%3A53%3Ad9 sync_member_names%3ABadezimmer_pCP%2CAnkleide_pCP
13:54:57Connection closed
13:54:57Skript Neues Skript hat geendet.
syncgroups ? gibt das o.g aus.
Syncstatus eines nicht gesyncten players gibt wie erwartet "-" aus.
zwei player lassens ich über MAC sync MAC erfolgreich syncen.
Jetzt aber zu der Schwierigkeit, die ich auch per http noch lösen gemusst hätte.
es lassen sich immer nur zwei player zugleich syncen mit dieser vorgehensweise. ich hbae noch nicht verstanden wie man direct mehrer player auswählt um diese zy syncen und auch nicht, wie man denn einen player von der einen syncgruppe in der er evtl gerade schon "steckt" rausholt und in die andere übernimmt. halt so wie oben skizziert.
Von
nein die cli befehle sind einfache befehle die man übber telnet sendet....da du in mediola keinen telnet hast habe ich dir das script gemacht, mit diesem script kannst du die cli befehle schreiben und genau das passiert in dieser zeile
client.write('192.168.1.20 sync ? \n');
hängt vom befehl ab
wenn du mit telnet ereichst mit einem oder mehreren befehlen zu syncen in gruppen oder so
baust du die befehle nacheinander in das script
wenn das funktioniert, dann musst du einfach einen task machen, im sobald block ein http befehl
wenn du auf den baustein klickst steht da eine url die du kopieren musst....diese legst du auf ein button mit http befehl an
im task unter aktion machst du ein script und genau dieses script wählen.
so für jeden befehl ein task ein script
mit den cli befehlen kann ich dir auch nicht helfen, da musst du versuchen zu suchen oder einfach spielen.
der firebug kann dir dabei helfen wenn du es über web machen kannst, da siehst du die befehle welche abgegeben sind
diese im telnet eingeben, sync, syncgroup oder was ach immer dort kommt
und keine klammern, firebug liefert json strings, wichtig ist der befehl
Von
einfach damit spielen....da kann dir keiner so richtig helfen....im google findet man alles, mehr suchen nach sync group, master usw.
Von
mir fällt da was ein:
wenn ich mir im script editor eine varibalenwert aus der ccu2 hole,
sieht das so aus
getDeviceStatus(
"_progs&sysvars",
"gw1_CCUsysVar_MRA_G1_Ankleide",
{"value":"mappedState"},
function(err, status) {
err && console.error(err.message);
console.log(status);
}
);
wenn ich das laufen lasse kommt auch der gemappte variablenwert raus den die variable haben soll.
beomme ich und wenn ja wie, mehrere dieser variablen statuus in den befehlsbereich deines codes,
also so:
client.write('inhalt ccu variable1 sync inhalt ccu variable 2 \n');
?
Neuen Kommentar hinzufügen