Ankündigung

Einklappen
Keine Ankündigung bisher.

TibberPulse als Ersatz für USB Device, aber wie Perl Code

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    TibberPulse als Ersatz für USB Device, aber wie Perl Code

    Moin zusammen,

    ich habe seit Jahren dieses https://knx-user-forum.de/forum/%C3%...in?view=stream Zählerabfrage als WiregatePlugin​ benutzt. Jetzt möchte ich Usb-Schnittstelle durch Tibber Pulse ersetzen. Komme da aber seit Tagen nicht weiter.

    Wenn ich auf der Konsole curl -u admin:123-BBBA http://192.168.0.159/data.json?node_id=5 | od -tx1 eingebe bekomme ich folgendes.

    % Total % Received % Xferd Average Speed Time Time Time Current
    Dload Upload Total Spent Left Speed
    100 236 100 236 0 0 1696 0 --:--:-- --:--:-- --:--:-- 1710
    0000000 1b 1b 1b 1b 01 01 01 01 76 05 0e 8a 8c 29 62 00
    0000020 62 00 72 63 01 01 76 01 01 05 04 d8 d9 63 0b 0a
    0000040 01 49 53 4b 00 04 fa e0 8c 72 62 01 65 04 d8 db
    0000060 14 62 01 63 d5 db 00 76 05 0e 8a 8c 2a 62 00 62
    0000100 00 72 63 07 01 77 01 0b 0a 01 49 53 4b 00 04 fa
    0000120 e0 8c 07 01 00 62 0a ff ff 72 62 01 65 04 d8 db
    0000140 14 75 77 07 01 00 60 32 01 01 01 01 01 01 04 49
    0000160 53 4b 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b
    0000200 0a 01 49 53 4b 00 04 fa e0 8c 01 77 07 01 00 01
    0000220 08 00 ff 65 00 1c 79 04 01 62 1e 52 ff 65 02 bd
    0000240 14 f7 01 77 07 01 00 02 08 00 ff 01 01 62 1e 52
    0000260 ff 65 0c 82 ed f8 01 77 07 01 00 10 07 00 ff 01
    0000300 01 62 1b 52 00 53 fc d2 01 01 01 63 e9 2d 00 76
    0000320 05 0e 8a 8c 2b 62 00 62 00 72 63 02 01 71 01 63
    0000340 4c 18 00 00 1b 1b 1b 1b 1a 01 a6 44
    0000354
    root@raspberrypi:/home#
    Diese Ausgabe möchte ich nun in meinem Perl Skript um setzen.
    PHP-Code:
    #!/usr/bin/perl -w
    # Autor: JuMi2006 / www.knx-user-forum.de
    # knx_write sub: makki / www.knx-user-forum.de
    # Version: 0.1
    # Datum: 19.02.2013

    use warnings;
    use 
    strict;
    use 
    LWP::Simple;
    use 
    Device::SerialPort;
    use 
    feature "switch";
    use 
    Encode qw(encode decode);
    #use EIBConnection;

    #0701000F0700FF = 7.0       FIXME !!! [0F]0700
    #070100010801FF = 1.8.1

    my $cc 'curl -u admin:1234-BBBA http://192.168.0.159/data.json?node_id=5 |  od -tx1';
    print `
    $cc`;
    my $string_len =  length($cc);

    print 
    "Length of  String is : $string_len\n";​ 
    PHP-Code:
    100   236  100   236    0     0   2489      0 --:--:-- --:--:-- --:--:--  2510
    0000000 1b 1b 1b 1b 01 01 01 01 76 05 0e 8a 8e fc 62 00
    0000020 62 00 72 63 01 01 76 01 01 05 04 d8 da 54 0b 0a
    0000040 01 49 53 4b 00 04 fa e0 8c 72 62 01 65 04 d8 dc
    0000060 05 62 01 63 48 89 00 76 05 0e 8a 8e fd 62 00 62
    0000100 00 72 63 07 01 77 01 0b 0a 01 49 53 4b 00 04 fa
    0000120 e0 8c 07 01 00 62 0a ff ff 72 62 01 65 04 d8 dc
    0000140 05 75 77 07 01 00 60 32 01 01 01 01 01 01 04 49
    0000160 53 4b 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b
    0000200 0a 01 49 53 4b 00 04 fa e0 8c 01 77 07 01 00 01
    0000220 08 00 ff 65 00 1c 79 04 01 62 1e 52 ff 65 02 bd
    0000240 14 f7 01 77 07 01 00 02 08 00 ff 01 01 62 1e 52
    0000260 ff 65 0c 82 ef b4 01 77 07 01 00 10 07 00 ff 01
    0000300 01 62 1b 52 00 53 fe 32 01 01 01 63 ca 07 00 76
    0000320 05 0e 8a 8e fe 62 00 62 00 72 63 02 01 71 01 63
    0000340 68 3f 00 00 1b 1b 1b 1b 1a 01 30 93
    0000354
    Length of  String is 
    75
    root
    @raspberrypi:/home#
    ​ 
    Mit print `$cc`; wird mir auch das obige ausgegeben, aber der HexString nicht in $cc gespeichert um dann damit weiter zuarbeiten.
    Wenn man sich die Länge von $cc ausgeben last ist die Länge 76 Zeichen, das ist genau die Länge von der URL.

    Oder was auf der Konsole, was auch funktioniert
    PHP-Code:
    root@raspberrypi:/home# curl -s -u admin:1234-BBBA http://192.168.0.159/data.json?node_id=5 | \
    >   tee sml.raw | \
    >   
    xxd -g 1 sml.hex
    root
    @raspberrypi:/home# cat sml.hex
    000000001b 1b 1b 1b 01 01 01 01 76 05 0e 8a 93 7c 62 00  ........v....|b.
    0000001062 00 72 63 01 01 76 01 01 05 04 d8 db d4 0b 0a  b.rc..v.........
    0000002001 49 53 4b 00 04 fa e0 8c 72 62 01 65 04 d8 dd  .ISK.....rb.e...
    0000003085 62 01 63 f6 72 00 76 05 0e 8a 93 7d 62 00 62  .b.c.r.v....}b.b
    00000040
    00 72 63 07 01 77 01 0b 0a 01 49 53 4b 00 04 fa  .rc..w....ISK...
    00000050e0 8c 07 01 00 62 0a ff ff 72 62 01 65 04 d8 dd  .....b...rb.e...
    0000006085 75 77 07 01 00 60 32 01 01 01 01 01 01 04 49  .uw...`2.......I
    00000070: 53 4b 01 77 07 01 00 60 01 00 ff 01 01 01 01 0b  SK.w...
    `........
    000000800a 01 49 53 4b 00 04 fa e0 8c 01 77 07 01 00 01  ..ISK......w....
    0000009008 00 ff 65 00 1c 79 04 01 62 1e 52 ff 65 02 bd  ...e..y..b.R.e..
    000000a014 f8 01 77 07 01 00 02 08 00 ff 01 01 62 1e 52  ...w.........b.R
    000000b0
    ff 65 0c 82 f2 05 01 77 07 01 00 10 07 00 ff 01  .e.....w........
    000000c001 62 1b 52 00 53 fd eb 01 01 01 63 1b a1 00 76  .b.R.S.....c...v
    000000d0
    05 0e 8a 93 7e 62 00 62 00 72 63 02 01 71 01 63  ....~b.b.rc..q.c
    000000e0
    64 32 00 00 1b 1b 1b 1b​ 
    Aber auch das bekomme ich das nicht nach Perl portiert.
    Meine Kenntnisse sind nun echt am Ende und ich auch.
    Ich wäre sehr dankbar wenn mir jemand auf die Sprünge helfen könnte.

    Gruß
    Michi

    #2
    Moin Michi,

    ich kann auch kein perl, aber laut internet musst du backticks verwenden. Daher ersetze mal

    Zitat von Michixx Beitrag anzeigen
    PHP-Code:
    my $cc 'curl -u admin:1234-BBBA http://192.168.0.159/data.json?node_id=5 | od -tx1';

    ​ 
    mit
    PHP-Code:
    my $cc = `​curl -u admin:1234-BBBA http://192.168.0.159/data.json?node_id=5 | od -tx1`;

    ​ 


    kleiner Unterschied aber müsste die Wirkung erzielen die du dir wünscht.

    Kommentar


      #3
      Moin Thomas,
      vielen Dank für die Hilfe, ich dachte wirklich das könnte es gewesen sein.
      Leider bekomme ich jetzt einen Fehler wegen eines unbekannten Zeichen.
      PHP-Code:
      Unrecognized character \xE2marked by <-- HERE after od -tx1`<-- HERE near column 86 at strom2.pl line 21. 

      Kommentar


        #4
        Hallo Thomas,

        das mit den backticks hat mir dann doch noch den richtigen Anstoß gegeben, folgender Code hat dann zum gewünschten Ergebnis geführt.

        PHP-Code:
        my $test1 = `$cc`; 
        Besten Dank dafür.
        Gruß Michi

        Kommentar

        Lädt...
        X