NEWS
[gelöst]TCP Daten senden
-
Hallo,
ich würde gerne mein Selbstbau Ambilight mit dem Logitech Harmonyadapter verbinden, damit das Ambilight automatisch mit dem Fernseher an und aus geht.
Um das Ambilight ein und auszuschalten kann ich an meinem Mac im Terminal folgendes eingeben:
Kommando für aus bzw. schwarze Farbe
echo '{ "color": [0,0,0], "command": "color", "priority": 100 }' | nc 192.168.1.205 19444
Kommando für ein
echo '{ "command": "clear", "priority": 100 }' | nc 192.168.1.205 19444
Gibt es eine Möglichkeit diese Befehle über den ioBroker per Script abzusenden?
Viele Grüße
Malte
-
Hallo Muskelkatermann,
ich weiß nicht, ob es auch mit netcat geht, aber der iobroker Befehl exec kann Terminal Befehle absetzen.
Gemäß https://github.com/ioBroker/ioBroker.javascript#exec–-execute-some-os-command-like-cp-file1-file2 einfach den vorhandenen Befehl in die Klammern setzen
Hier wird es vielleicht ein Problem mit den Anführungszeichen geben. Aber einen Versuch ist es wert.
Sonst musst du mal gucken, ob du nicht damit weiterkommst: http://www.hacksparrow.com/tcp-socket-p … de-js.html
Gruß
Pix
-
@pix:Hallo Muskelkatermann,
ich weiß nicht, ob es auch mit netcat geht, aber der iobroker Befehl exec kann Terminal Befehle absetzen.
Gemäß https://github.com/ioBroker/ioBroker.javascript#exec–-execute-some-os-command-like-cp-file1-file2 einfach den vorhandenen Befehl in die Klammern setzen
Hier wird es vielleicht ein Problem mit den Anführungszeichen geben. Aber einen Versuch ist es wert.
Sonst musst du mal gucken, ob du nicht damit weiterkommst: http://www.hacksparrow.com/tcp-socket-p … de-js.html
Gruß
Pix `
Node.js kann TCP/UDP Pakete problemlos senden.Beispiel für Javascript Skript:
var net = require('net'); function sendMessage(host, port, message) { var client = net.connect({host:host, port: port}, function () { // 'connect' listener console.log('connected to server!'); client.write(message); }); client.on('data', function (data) { console.log(data.toString()); client.end(); }); client.on('end', function () { console.log('disconnected from server'); }); client.on('error', function (error) { console.error('error: ' + error); client.end(); }); } sendMessage('192.168.1.205', 19444, '{ "color": [0,0,0], "command": "color", "priority": 100 }');
-
Hallo Zusammen,
@Bluefox: Vielen Dank, das klappt wunderbar. Es fehlte nur ein CrLF am Ende des Kommandos, also:
sendMessage('192.168.1.205', 19444, '{ "color": [0,0,0], "command": "color", "priority": 100 }\r\n');
Die Kommandos beziehen sich übrigens auf das DIY Ambilight Hyperion ( Falls jemand mal auf der Suche ist)
// Farbe setzten bzw. ausschalten (Farbwert [0,0,0]) sendMessage('192.168.1.205', 19444, '{ "color": [0,0,0], "command": "color", "priority": 100 }\r\n'); // Farbeffekt starten sendMessage('192.168.1.205', 19444, '{ "command": "effect", "effect": {"name": "Full color mood blobs"}, "priority": 100 }\r\n'); // Ambilight Modus aktivieren sendMessage('192.168.1.205', 19444, '{ "command": "clear", "priority": 100 }\r\n' );
Jetzt muss ich das nur noch schon zurecht scripten, damit es sich immer automatisch an die aktuellen Licht und Logitech Harmony Aktionen anpasst.
Grüße,
Malte
-
Hi, irgendwie funzt das Ganze bei mir nicht so ganz wie hier beschrieben.
Bin folgendermaßen in ioBroker vorgegangen:
1. Adapter: Javascript/Coffescript Script Engine hinzugefügt
2. in der Navigation bei Scripte habe ich dann den Ordner Amibilight erstellt und darin folgenden Script erstellt:
var net = require('net');
function sendMessage(host, port, message) {
var client = net.connect({host: host, port: port}, function () {
// 'connect' listener
console.log('connected to server!');
client.write(message);
});
client.on('data', function (data) {
console.log(data.toString());
client.end();
});
client.on('end', function () {
console.log('disconnected from server');
});
client.on('error', function (error) {
console.error('error: ' + error);
client.end();
});
}
sendMessage('192.168.1.88', 19444, '{ "color": [0,0,0], "command": "color", "priority": 100 }\r\n');
Wenn ich dann in dem Script auf Play gehe, passiert nichts und ich erhalte folgende LOG:
3:10:25.478 [info] javascript.0 Start javascript script.js.Scripte.Ambilight.Skript1
23:10:25.480 [info] javascript.0 script.js.Scripte.Ambilight.Skript1: registered 0 subscriptions and 0 schedules
23:10:25.625 [info] javascript.0 script.js.Scripte.Ambilight.Skript1: connected to server!
23:10:25.636 [info] javascript.0 script.js.Scripte.Ambilight.Skript1: {"success":true}
23:10:25.640 [info] javascript.0 script.js.Scripte.Ambilight.Skript1: disconnected from server
Wisst ihr vielleicht was ich falsch mache?
vg
Alex
-
// Farbe setzten bzw. ausschalten (Farbwert [0,0,0]) sendMessage('192.168.1.205', 19444, '{ "color": [0,0,0], "command": "color", "priority": 100 }\r\n'); // Farbeffekt starten sendMessage('192.168.1.205', 19444, '{ "command": "effect", "effect": {"name": "Full color mood blobs"}, "priority": 100 }\r\n'); // Ambilight Modus aktivieren sendMessage('192.168.1.205', 19444, '{ "command": "clear", "priority": 100 }\r\n' ); ```` `
Gibt es eine Möglichkeit dies in Blockly zu gestalten?
Mit welchem Objekt lässt sich das "sendMessage" realisieren?
-
Mit welchem Objekt lässt sich das "sendMessage" realisieren? `
sendMessage ist die Funktion, die obendrüber definiert wurde. Wenn es einen Block für das net-Modul gibt, könnte es gehen. Aber ich schätze nicht. -
Hier gibt es eine node um Hyperion anzusprechen…..evtl. hilft Dir das weiter @sanccez
-
Gibt es Pläne für einen Hyperion-Adapter? Den Boblight-adapter bekomme ich leider nicht ans laufen…
-
@ mrMuppet
gibt es…. vor 10 minuten auf Github gefunden.
Man kann alle Effekte steuern. Wenn jetzt noch einer erklären kann wie ich mit dem Adapter
auch "hyperion-remote -color black" oder "hyperion-remote -clearall" senden kann,
wäre ich glücklich.
MfG LaGra
-
@ mrMuppet
gibt es…. vor 10 minuten auf Github gefunden.
Man kann alle Effekte steuern. Wenn jetzt noch einer erklären kann wie ich mit dem Adapter
auch "hyperion-remote -color black" oder "hyperion-remote -clearall" senden kann,
wäre ich glücklich.
MfG LaGra `
Dann lass uns doch bitte an deinem Fund teilhaben, Danke
-