zwave_jeedomconvert.pl 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. if(@ARGV != 0) {
  5. print "Usage:\n".
  6. " git clone https://github.com/jeedom/plugin-openzwave".
  7. " cd plugin-openzwave/core/config".
  8. " gzip -d < <fhem>/FHEM/lib/zwave_pepperlinks.csv.gz > zwave_pepperlinks.csv\n".
  9. " perl <fhem>/contrib/zwave_jeedomconvert.pl\n".
  10. " copy *.jpg to fhem.de/deviceimages/zwave\n".
  11. " gzip < zwave_pepperlinks.csv.NEW > <fhem>/FHEM/lib/zwave_pepperlinks.csv.gz\n".
  12. " rm *.jpg\n";
  13. exit 1;
  14. }
  15. open(F1, "<zwave_pepperlinks.csv") || die("zwave_pepperlinks.csv: $!\n");
  16. my %m;
  17. while(my $l = <F1>) {
  18. chomp($l);
  19. my @a = split(/,/,$l);
  20. $m{$a[0]}{L} = $a[1];
  21. $m{$a[0]}{P} = $a[2];
  22. }
  23. close(F1);
  24. open(F1, "find devices -name \\*.jpg -print|") || die("Cant start find: $!\n");
  25. while(my $l = <F1>) {
  26. chomp($l);
  27. next if($l !~ m,/(\d+)\.(\d+)\.(\d+)_(.*)$,);
  28. my $i = sprintf("%04x-%04x-%04x", $1, $2, $3);
  29. next if($m{$i} && $m{$i}{P});
  30. my $file = "$1.$2.$3_$4";
  31. $file =~ s/ /_/g;
  32. print "WARNING: bogus filename $file\n" if($file =~ m/^[^0-9A-Za-z.]+$/);
  33. $m{$i}{P} = $file;
  34. `cp "$l" $file`;
  35. }
  36. close(F1);
  37. open(F2, ">zwave_pepperlinks.csv.NEW") || die("zwave_pepperlinks.csv.NEW: $!\n");
  38. for my $i (sort keys %m) {
  39. my ($l,$p) = ($m{$i}{L}, $m{$i}{P});
  40. next if(!$l && !$p);
  41. $l = "" if(!$l);
  42. $p = "" if(!$p);
  43. print F2 "$i,$l,$p\n";
  44. }
  45. close(F2);