KNX Data Secure Unterstützung
für KNX Logger und KNX Busmonitor

KNX Diagnose Monitor, Import des ETS Projektes deutlich beschleunigt, Suche in der Navigation
Mehr Informationen dazu hier im Forum

Insider Version 6 zur 4.5 jetzt für alle Mitglieder des Insider Clubs installierbar
Alle Infos zum Update im Timberwolf Wiki

[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: 2216
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1978 Mal
Danksagung erhalten: 885 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: 2216
Registriert: Do Feb 07, 2019 8:08 am
Hat sich bedankt: 1978 Mal
Danksagung erhalten: 885 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“