############################################## # $Id$ package main; use strict; use warnings; use HttpUtils; sub CommandCULflash($$); my $urlbase = "http://fhem.de/fhemupdate/"; ##################################### sub CULflash_Initialize($$) { my %chash = ( Fn=>"CommandCULflash", Hlp=>" ,flash the CUL from the nightly SVN" ); $cmds{CULflash} = \%chash; } ##################################### sub CommandCULflash($$) { my ($cl, $param) = @_; my %ctypes = ( CUL_V2 => { cmd => 'dfu-programmer at90usb162 erase && '. 'dfu-programmer at90usb162 flash $filepath && '. 'dfu-programmer at90usb162 start', flash => 'CUL_SimpleWrite($defs{$device},"B01");sleep(4); undef;' }, CUL_V2_HM => { cmd => 'dfu-programmer at90usb162 erase && '. 'dfu-programmer at90usb162 flash $filepath && '. 'dfu-programmer at90usb162 start', flash => 'CUL_SimpleWrite($defs{$device},"B01");sleep(4); undef;' }, CUL_V3 => { cmd => 'dfu-programmer atmega32u4 erase && '. 'dfu-programmer atmega32u4 flash $filepath && '. 'dfu-programmer atmega32u4 start', flash => 'CUL_SimpleWrite($defs{$device},"B01");sleep(4); undef;' }, CUL_V3_ZWAVE => { cmd => 'dfu-programmer atmega32u4 erase && '. 'dfu-programmer atmega32u4 flash $filepath && '. 'dfu-programmer atmega32u4 start', flash => 'CUL_SimpleWrite($defs{$device},"B01");sleep(4); undef;' }, CUL_V4 => { cmd => 'dfu-programmer atmega32u2 erase && '. 'dfu-programmer atmega32u2 flash $filepath && '. 'dfu-programmer atmega32u2 start', flash => 'CUL_SimpleWrite($defs{$device},"B01");sleep(4); undef' }, ); my @a = split("[ \t]+", $param); return "Usage: CULflash [FHEM-Device|none] TYPE>, ". "where TYPE is one of ". join(" ", sort keys %ctypes) if(int(@a)!=2 || !($a[0] eq "none" || $defs{$a[0]}) || !$ctypes{$a[1]}); my $device = $a[0]; my $type = $a[1]; my $filename = $a[1].".hex"; my $fwdir = $attr{global}{modpath} . "/FHEM/firmware"; my $filepath = "$fwdir/$filename"; ################################ # Get the firmware file: if(! -d $fwdir) { mkdir($fwdir) || return "$fwdir: $!"; } my $content = GetFileFromURL("$urlbase/FHEM/firmware/$filename"); return "Cannot get $urlbase/FHEM/firmware/$filename" if(!$content); if($content !~ m/:00000001FF/) { Log3 undef, 3, $content; return "The retrieved $filename is not a correct .hex file"; } my $localfile = "$filepath"; open(FH,">$localfile") || return "Can't write $localfile"; print FH $content; close(FH); if($device ne "none" && $ctypes{$type}{flash}) { my $ret = eval $ctypes{$type}{flash}; Log 1, "CULflash $device: $ret" if($ret); } my $cmd = eval "return \"$ctypes{$type}{cmd};\""; Log3 undef, 1, "CULflash $cmd"; my $result = `($cmd) 2>&1`; Log3 undef, 1, "CULflash $result"; return $result; } 1; =pod =item command =item summary flash (USB-)CUL device with culfw =item summary_DE USB-CUL Geräte mit Firmware versorgen (flashen) =begin html

CULflash

=end html =begin html_DE

CULflash

=end html_DE =cut