Ankündigung

Einklappen
Keine Ankündigung bisher.

linux - eibd und die Zeit auf den bus schicken

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

    linux - eibd und die Zeit auf den bus schicken

    Hallo Jungs,

    ich hab jetzt eibd laufen. War eigentlich nicht sonderlich kompliziert die ersten Lampen über die shell an und aus zu machen

    Code:
    # groupswrite ip:127.0.0.1 1/1/1 1
    Meine Rollläden fahren jetzt durch einen crontab eintrag morgens auf

    Code:
    30 6 * * 1-5 /usr/bin/groupswrite ip:127.0.0.1 0/3/2 0
    Die Zeit habe ich jetzt auch auf dem Bus. Das war nicht ganz so leicht . Aber mit perl ist alles recht schnell lösbar. Vielleicht kann das noch jemand anderes brauchen.

    Code:
    #!/usr/bin/perl
    
    use Math::BaseCnv;
    
    # right $len chars
    sub rstr{
      my $s = shift;
      my $len = shift;
      # printf("DEBUG %s %i\n",$s,$len);
      return substr($s, length($s) - $len, $len);
    }
    
    # read local time
    ($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek, $dayOfYear, $daylightSavings) = localtime(time);
    
    # Mon is KNX 001 and Sun is 111 in Linux is Sun 1 und Sat 7
    @weekDays = qw(111 001 010 011 100 101 110);
    
    # calc $hour in bin with exact 5 digits
    $bin_hour = rstr("000000".cnv( $hour, 10, 2) ,5);
    
    @args = ("/usr/bin/groupwrite", "ip:127.0.0.1", "0/6/6",                  # change protocoll to your needs
             sprintf("%02X", cnv( $weekDays[$dayOfWeek] . $bin_hour, 2, 10)), # calc weekday and hour in hex
             sprintf("%02X", $minute),                                        # same for minute and second
             sprintf("%02X", $second));
    
    # execute command
    system(@args) == 0 or die "system @args failed: $?";
Lädt...
X