UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[DISKUSSION] Steuerung der Onkyo AV Receiver

Wissen, Planung & Diskussion zur Unterstützung von Rest-API & Webabfragen im Timberwolf Server.
Stellt uns hier Eure Projekte und Ideen vor.
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Ersteller
Sun1453
Reactions:
Beiträge: 1849
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1541 Mal
Danksagung erhalten: 788 Mal

#11

Beitrag von Sun1453 »

Hallo Adi und Robert, @adimaster @Robert_Mini

Habe jetzt eine Node für Node Red entdeckt. Mit Node Red werde ich mal schauen was da aktuell geht. Eventuell ist es aber auch für Stefan [@StefanW ] und sein Team interessant. Es sind nur wenige Dateien und vielleicht könnt ihr das Informationen ziehen. FR

https://github.com/estbeetoo/node-red-contrib-eiscp

https://flows.nodered.org/node/node-red-contrib-eiscp
Zuletzt geändert von Sun1453 am Do Jun 11, 2020 12:30 pm, insgesamt 2-mal geändert.
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN offen | TEST Server | Reboot nach Absprache |

Ersteller
Sun1453
Reactions:
Beiträge: 1849
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1541 Mal
Danksagung erhalten: 788 Mal

#12

Beitrag von Sun1453 »

Weitere Infos die helfen könnten:

Code: Alles auswählen

Code:

#!/usr/bin/perl -w

use strict;
use IO::Socket;


my $host =  '192.168.4.52';
my $port = '60128';

my $logfile = '/var/log/iscp.log';

my %actions = (
"PWR00", '/usr/local/bin/groupwrite "ip:127.0.0.1" "3/3/0" "0"',
"PWR01", '/usr/local/bin/groupwrite "ip:127.0.0.1" "3/3/0" "1"',
"ZPW00", '/usr/local/bin/groupwrite "ip:127.0.0.1" "3/3/2" "0"',
"ZPW01", '/usr/local/bin/groupwrite "ip:127.0.0.1" "3/3/2" "1"',
"MVL", '/usr/local/bin/groupswrite "ip:127.0.0.1" "3/3/1" "VALUE"',
"ZVL", '/usr/local/bin/groupswrite "ip:127.0.0.1" "3/3/3" "VALUE"',
"SLI", '/usr/local/bin/groupswrite "ip:127.0.0.1" "3/3/5" "VALUE"',
"SLZ", '/usr/local/bin/groupswrite "ip:127.0.0.1" "3/3/6" "VALUE"'
);





# --------------------------
# nothing to edit after this
# --------------------------

# daemonize

my $pid= fork();
exit if $pid;
die "Couldn't fork: $!" unless defined($pid);

for my $handle (*STDIN,*STDOUT,*STDERR){
open($handle, "+<", "/dev/null") || die "can't reopen $handle to /dev/null: $!";
}

use POSIX;
POSIX::setsid() or die "Can't start a new session: $!";

my $time_to_die=0;

sub signal_handler {
$time_to_die=1;
}

$SIG{INT}=$SIG{TERM}=$SIG{HUP}=\&signal_handler;

until ($time_to_die) {



my $sock = new IO::Socket::INET(
                   PeerAddr => $host,
                   PeerPort => $port,
                   Proto    => 'tcp');
$sock or die "no socket :$!";
$sock->autoflush(1);

my $socklocal = new IO::Socket::INET(
                    LocalPort => $port,
                    Type => SOCK_STREAM,
                    Listen => 5,
                    Reuse => 1 );

$socklocal or die "no socket :$!";

my($kid,$line,$cmd,$length,$code,$in);
die "fork fail: $!" unless defined($kid = fork);
if ($kid) {
    while (my $client=$socklocal->accept) {
        $in=<$client>;
        $cmd="!1".$in;
        $length=length($cmd)+1;
        $code =chr($length);

        # setup the string we are sending ...
        $line  = "ISCP\x00\x00\x00\x10\x00\x00\x00$code\x01\x00\x00\x00".$cmd."\x0D";

        # send it !
        print $sock $line;
    }
    # kill the child process
    kill(TERM => $kid);
} else {

    # child reads from socket
    while (defined($sock->recv(my $data,1024))) {
        my $chunk=substr($data,18,5);
        while ((my $key, my $value)=each(%actions)) {
            if (!index($chunk, $key)) {
                if (index($value, "VALUE")>0) {
                    $_=$chunk;
                    my $result=s/$key//;
                    $chunk=$_;
                    substr($value, index($value, 'VALUE'),5 )=$chunk
                }
        open FILE, ">>", "$logfile" or die $!;
        my $t = time();
        my $now = localtime($t);
        print FILE "$now \t Chunk $chunk \t Key $key \t Value $value\n";
        close(FILE);

                system($value);
            }
        }
    }
    close $sock;
}
}
Gruß Michael

Timberwolf 950 QL #344 | Mit Internetanbindung | VPN Offen | Reboot nach Absprache | PROD Server
Timberwolf 2500 #602 | VPN offen | TEST Server | Reboot nach Absprache |
Antworten

Zurück zu „HTTP-API, REST & Web-Abfragen“